Oznámení
update viacerých riadkov v tabuľke + postupná inkrementácia hodnoty
před 9 lety
- pepcisko
- Člen | 3
zdravím, posielam na mySql databázu takúto query:
SET @pos := 0; UPDATE `albums` SET `position` = (SELECT @pos := @pos + 1) WHERE `parent` = 1 ORDER BY `position`;
a dostávam DibiDriverException s hláškou
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE `albums` SET `position` = (SELECT @pos := @pos + 1) WHERE `parent` = 1 OR' at line 1' in C:\Data\webs.....
Zaujímavé je že keď rovnakú query (copy paste z DibiDriverException->getSql(); ) pošlem na databázu napr. cez HeidiSQL tak to funguje bez problémov.
Netušíte niekto kde robím chybu? Dibi je verzia 1.3-dev, revizia af6352d released on 2010–11–10, php 5.3.3, driver používam mysqli..
ďakujem..
před 9 lety
- blacksun
- Člen | 181
Nepřiřazuje se do proměnné bez dvojtečky?
Jinak zkus napsat kus kódu, jak ten dotaz zapisuješ, možná v tom bude nějakej nenápadnej bug..
před 9 lety
- pepcisko
- Člen | 3
to som si už opravil, je fakt že s dvojbodkou sa to dáva len mimo SET-u. Nová query je
SET @pos = 0; UPDATE `albums` SET `position` = (SELECT @pos := @pos + 1) WHERE `parent` = 1 ORDER BY `position`;
ale robí to presne to isté..
php kód je jednoduchý, v podstate len toto:
dibi::query('SET @pos = 0; UPDATE [photos] SET [position] = (SELECT @pos := @pos + 1) WHERE [id_album] = %i', $id_album, 'ORDER BY [position];');
Edit: vlastne je to jedno, priradenie cez SET môže byť = alebo :=, len v SELECTe musí byť :=
Editoval pepcisko (29. 12. 2010 10:37)
před 9 lety
- paranoiq
- Člen | 388
přes dibi::query (mysqli::query) jde poslat pouze jeden dotaz. rozděl to do dvou volání. session proměnná @pos je platná pro celou dobu spojení s databází, takže to bude fungovat i tak
dibi::query('SET @pos = 0;');
dibi::query('UPDATE [photos] SET [position] = (SELECT @pos := @pos + 1) WHERE [id_album] = %i', $id_album, 'ORDER BY [position];');
HeidiSQL nejspíš používá k odeslání multi_query (http://cz.php.net/…ti-query.php) či tak něco
před 9 lety
- pepcisko
- Člen | 3
funguje to, ďakujem :)