Autor | Zpráva | ||
---|---|---|---|
mattyZEM Profil |
#1 · Zasláno: 11. 9. 2010, 12:17:02 · Upravil/a: mattyZEM
Dobrý den,
mám takový vtipný problém v MySQL, ohledně LIMITu. V PHP mi select funguje, v PMA nikoliv, přičemž jsou stejné. 1) PHP SELECT * FROM forum_prispevky p LEFT JOIN uzivatele u ON (p.fpautor_id=u.uid) WHERE fptema='$tid' ORDER BY fpid LIMIT ".(($strana-1)*$max_p).", $max_p SELECT * FROM forum_prispevky p LEFT JOIN uzivatele u ON (p.fpautor_id=u.uid) WHERE fptema='82' ORDER BY fpid LIMIT ".((2-1)*15).", 15 $max_p je 15, $strana je 2, $tid je 82, v PMA mi to hází chybu: #1064 - 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 '".((2-1)*15).", 15' at line 1 Nevíte, kde je chyba? :-) Předem dík. |
||
Alphard Profil |
#2 · Zasláno: 11. 9. 2010, 12:22:47 · Upravil/a: Alphard
mattyZEM:
Pořád tam máte uvozovky, jak jste to vykopíroval z PHP. Vemte jen LIMIT ((2-1)*15), 15
Tak to stejně nejde [#4] nightfish |
||
mattyZEM Profil |
#3 · Zasláno: 11. 9. 2010, 12:23:39 · Upravil/a: mattyZEM
SELECT * FROM forum_prispevky p LEFT JOIN uzivatele u ON (p.fpautor_id=u.uid) WHERE fptema='82' ORDER BY fpid LIMIT ((2-1)*15), 15 Nebojte, zkoušel jsem… :-\ Řeším to kvůli tomuto: SELECT fpid,fptext,fptime,fppoch,uid,ujmeno,uavatar,uvarovani,ubarva,uskupina,upodpis FROM forum_prispevky p LEFT JOIN users u ON (p.fpuid=u.uid) WHERE fptema=".$_GET['ftid']." AND fphlavni=0 ORDER BY fpid LIMIT ".(($strana-1)*$max).", $max |
||
nightfish Profil |
#4 · Zasláno: 11. 9. 2010, 12:26:36 · Upravil/a: nightfish
v LIMITu se mohou používat pouze nezáporné celočíselné konstanty, výrazy nejsou povoleny
tedy LIMIT 15, 15 |
||
mattyZEM Profil |
#5 · Zasláno: 11. 9. 2010, 12:28:51 · Upravil/a: mattyZEM
nightfish:
„se mohou používat pouze nezáporné celočíselné konstanty“ Beru, ale proč tedy nefunguje druhý - nový SELECT? - starý: SELECT * FROM forum_prispevky p LEFT JOIN uzivatele u ON (p.fpautor_id=u.uid) WHERE fptema='$tid' ORDER BY fpid LIMIT ".(($strana-1)*$max_p).", $max_p SELECT fpid,fptext,fptime,fppoch,uid,ujmeno,uavatar,uvarovani,ubarva,uskupina,upodpis FROM forum_prispevky p LEFT JOIN users u ON (p.fpuid=u.uid) WHERE fptema=".$_GET['ftid']." AND fphlavni=0 ORDER BY fpid LIMIT ".(($strana-1)*$max).", $max |
||
Alphard Profil |
#6 · Zasláno: 11. 9. 2010, 12:30:26 · Upravil/a: Alphard
mattyZEM:
„Beru, ale proč tedy nefunguje druhý - nový SELECT?“ Vypište si, co PHP vypočítá, a hned uvidíte problém. |
||
nightfish Profil |
#7 · Zasláno: 11. 9. 2010, 12:30:34
|
||
mattyZEM Profil |
#8 · Zasláno: 11. 9. 2010, 12:32:38
|
||
Alphard Profil |
#9 · Zasláno: 11. 9. 2010, 12:38:03
mattyZEM:
nightfish tím chtěl říct, že jste špatně popsal problém. Co znamená "nefunguje"? S ohledem na [#8] limit 15,15 je syntakticky správně. Nevím, co může nefungovat.
|
||
mattyZEM Profil |
#10 · Zasláno: 11. 9. 2010, 12:40:47
Jo, pardon, já jsem zapomněl zmínit chybovou hlášku, velmi se omlouvám.
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 '' at line 1 Když smažu LIMIT, funguje to správně, bohužel však takto nemohu použít stránkování. nightfish: Omlouvám se. |
||
nightfish Profil |
#11 · Zasláno: 11. 9. 2010, 12:47:39
mattyZEM:
místo mysql_query("SELECT fpid, ..."); dej echo("SELECT fpid, ..." a poděl se s námi o to, co to vypíše |
||
mattyZEM Profil |
#12 · Zasláno: 11. 9. 2010, 12:49:25
SELECT fpid,fptext,fptime,fppoch,uid,ujmeno,uavatar,uvarovani,ubarva,uskupina,upodpis FROM forum_prispevky p LEFT JOIN users u ON (p.fpuid=u.uid) WHERE fptema=82 AND fphlavni=0 ORDER BY fpid LIMIT 15, 15 |
||
nightfish Profil |
#13 · Zasláno: 11. 9. 2010, 12:52:00 · Upravil/a: nightfish
Syntakticky to vypadá správně. Ještě bych možná všechny názvy sloupců a tabulek uzavřel do zpětných apostrofů...
SELECT `fpid`, `fptext`, ... FROM `forum_prispevky` `p` LEFT JOIN `users` `u` ON (`p`.`fpuid` = `u`.`uid`) WHERE ... |
||
mattyZEM Profil |
#14 · Zasláno: 11. 9. 2010, 12:53:46
nightfish:
„Syntakticky to vypadá správně“ Právě proto jsem se ptal, kde je chyba, jelikož toto jsem zkoušel již dávno. „uzavřel do zpětných apostrofů“ Vyzkoušeno, také… Nejde. |
||
Časová prodleva: 14 let
|
0