Autor Zpráva
joe
Profil
Ahoj,

Potřeboval bych nějak nastavit dvě buňky v tabulce a to tak, že pro každý SET, bych měl podmínky jiné, jestli to lze, nemůžu na to přijít.

Dám příklad, který nefunguje:-) z toho to bude pochopitelné.

UPDATE tabulka
SET sloupec_prvni = 1 WHERE id = 10,
SET sloupec_druhy = 0 WHERE id = 20;

Jde to nějak napsat jedním dotazem?

Díky

(omylem jsem smazal část názvu)
K
Profil *
pokud mas odlisny where, tak to posli jako dva dotazy..

query("UPDATE tabulka SET sloupec_prvni = 1 WHERE id = 10; UPDATE tabulka SET sloupec_druhy = 0 WHERE id = 20;");
joe
Profil
K
Díky, nevím proč, ale nefunguje mi to tak, když mam dva dotazy napsané za sebou. Když vygenerované spojené dotazy hodím do phpmyadmin, tak to funguje.
Ale když dám

query("dotaz1; dotaz2");

Tak mi to píše chybu. Je nějaký rozdíl když napíšu

query("dotaz1; dotaz2");

nebo

query("dotaz1");
query("dotaz2");


Nebo je to naprosto stejné? :-) Já jenom jestli to v tom prvním případě není bráno jako jeden dotaz.
K
Profil *
Co ti to vypsalo za chybu?
nightfish
Profil
mysql_query spojování více dotazů za sebe nepodporuje
phpmyadmin to imho rozseká a pošle zvlášť
Kajman_
Profil *
Jde to nějak napsat jedním dotazem?

UPDATE tabulka
SET sloupec_prvni = IF(id=10,1,sloupec_prvni),
sloupec_druhy = IF(id=20,0,sloupec_druhy)
WHERE id in (10,20);

Ale osobně bych napsal ty dva jednoduché než jeden nepřehledný.

A více dotazů je zpravidla zakázáno z bezpečnostních důvodů.
K
Profil *
wow tak jsem zas o neco chytrejsi.
joe
Profil
Aha, díky všem. Taky jsem nevěděl, že jde jen jeden dotaz, jsem si mohl myslet, že phpmyadmin z toho udělá více dotazů. Tím se problém vyřešil, použiju dva a nebo předělám systém jakým to mám :-)
Toto téma je uzamčeno. Odpověď nelze zaslat.