Autor | Zpráva | ||
---|---|---|---|
Misa Profil * |
#1 · Zasláno: 9. 7. 2012, 14:05:39 · Upravil/a: Moderátor (editace znemožněna) 12. 7. 2012, 11:09:46
Ahoj. Udělám tohle :
$db_command = mysql_query("UPDATE fskazy SET dorucenka = '0' WHERE adresat = '".$_SESSION['login']."' LIMIT ".$next.", 10") or die (mysql_error()); a řekne mi to tohle : 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 ' 10' at line 1 Absoluteně mi neni jasný co je špatně... chci jenom updatovat deset doručenek. Nemohl by mi někdo píchnout? Děkuji. |
||
Kajman Profil |
#2 · Zasláno: 9. 7. 2012, 14:09:44
Vypište si výsledný sestavený dotaz, nejspíše bude v $next něco jiného, než očekáváte.
|
||
Časová prodleva: 3 dny
|
|||
Misa Profil * |
#3 · Zasláno: 12. 7. 2012, 03:18:00 · Upravil/a: Misa
žádný nápady jo?
Ne. V $next je číslo. Kajman: Udělal jsem ten výsledný sestavený dotaz, ale nic nového jsem se nedozvěděl. Došlo k chybě v dotazu: UPDATE fskazy SET dorucenka = 0 WHERE adresat = 'NejakyNick' LIMIT 0,10 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 '10' at line 1 |
||
Tori Profil |
#4 · Zasláno: 12. 7. 2012, 07:28:41
U UPDATE zřejmě může být limit pouze jedno číslo (= počet řádků počínajíc prvním, nikoli výběr řádků). Můžete to ale obejít poddotazem, ve kterém si vyberete potřebný rozsah řádků:
UPDATE tabulka INNER JOIN (SELECT id FROM tabulka WHERE podminka LIMIT 5, 10) t2 USING (id) SET tabulka.sloupec = 'novaHodnota' |
||
Misa Profil * |
#5 · Zasláno: 12. 7. 2012, 08:52:14 · Upravil/a: Misa
Tori:
čili jsem to upravil takhle : $db_command = mysql_query("UPDATE fskazy INNER JOIN (SELECT ID_vzkazu FROM fskazy WHERE adresat = '".$_SESSION['login']."' LIMIT ".$next.", 10) t2 USING (ID_vzkazu) SET fskazy.dorucenka = '0'") or die (mysql_error()); problém je že to neudělá vůbec nic. ani chybu ani to co chci. nic. jenom bych rád uvedl že tohle : $db_command = mysql_query("UPDATE fskazy SET dorucenka = 0 WHERE adresat = '".$_SESSION['login']."'") or die (mysql_error()); funguje. jenom to neudělá to co chci. je to bez toho limitu |
||
Kajman Profil |
#6 · Zasláno: 12. 7. 2012, 09:15:56
Misa:
„problém je že to neudělá vůbec nic“ Pokud dáte limit bez order by, tak se těžko db trefí přesně do těch 10 záznamů, které chcete upravit. Počet změněných řádků zjistíte např. díky mysql_affected_rows, ale pokud tam byly ve sloupci dorucenka nuly, tak se to za změnu nebude považovat. |
||
Misa Profil * |
#7 · Zasláno: 12. 7. 2012, 09:44:50
A jo. order by ... no jo no. Tak Vám moc děkuju. Už to funguje jak má. :o)
|
||
Časová prodleva: 12 let
|
0