Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie O SQL
Forum PHP.pl > Forum > Bazy danych > MySQL
mierzej
Czy można uzyskać odpowiedź na takie zapytanie do bazy danych MySQL:
'SELECT * FROM towar WHERE Id=294,25,94,190,233'
wywala mi błąd gdy używam np. mysql_fetch_assoc lub mysql_fetch_row, Gdy zamiast dlugiego ciągu 294,25,94,190,233 wstawie 294 otrzymuje wynik ale ja bym chcial uzyskac dostep do tych wszystkich rekordów tabeli. Proszę pomóżcie
Foxx
http://www.w3schools.com/sql/sql_in.asp
mierzej
Wielkie dzięki biggrin.gif Ale mam jeszcze jedno pytanie. Czy podczas aktualizacji rekordu, wiedząc iż ten rekord jest typu Int, można zwiększyć bądź zmniejszyć jego wartość o 1, bez wcześniejszego odczytywania wartości. Inny sposób zrozumienia biggrin.gif :
rekord ile=25
1 sposob: pobieram wartosc z bazy do zmiennej, dodaje 1 do zmiennej i aktualizuje baze
2 spsob: aktualizuje baze od razu zwiekszajac wartosc
griken
odpowiedź do sposobu 2:
zakładając, że masz przykładową tabele:
  1. CREATE TABLE `table_name` (
  2. `id` INTEGER(11) NOT NULL AUTO_INCREMENT,
  3. `ile` INTEGER(11) DEFAULT '0',
  4. PRIMARY KEY (`id`),
  5. UNIQUE KEY `id` (`id`)
  6. )ENGINE=InnoDB
  7. AUTO_INCREMENT=1;

oraz dodane 2 wiersze z danymi w tabeli, przy użyciu:
  1. INSERT INTO `table_name`(`id`) VALUES(1),(2);
  2. COMMIT;

możesz aktualizować wartość z kolumny `ile` w taki sposób:
  1. UPDATE table_name SET ile=ile+1 WHERE id = 2;
  2. COMMIT;

albo nawet akualizować kilka wierszy jednocześnie:
  1. UPDATE table_name SET ile=ile+1 WHERE id IN (1,2);
  2. COMMIT;


Uważaj na właściwości kolumny `ile`, np. gdy kolumna ta jest zdefiniowana tak:
`ile` INTEGER(11) DEFAULT NULL wtedy podane wcześniej zapytania UPDATE nie spowodują zmiany wartości z NULL na 1 przy pierwszym wykonaniu zapytania, ani przy każdym następnym.
mierzej
Dzięki, pomogłeśbiggrin.gif

Odświeżam temat ponieważ mam problem z użyciem operatora In w poniższym zapytaniu:

'SELECT * FROM tabela WHERE Id IN(15, 26, 78, 3, 169, 9)'

kiedy wywołam to zapytanie wszystko jest ok ale gdy zaistnieje sytuacja że np. rekord o indeksie 26 nie będzie istniał to wywali błąd :/ jest może jakiś inny sposób aly za pomocą zapytania sql dostać się do kilku rekordów?
SzamanGN
Przetestowałem u siebie i nie wywala żadnych błędów.
Podaj treść błędu, który otrzymujesz.

PS. Czy odwołujesz się do prawidłowego pola?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.