Autor | Zpráva | ||
---|---|---|---|
gardener Profil |
#1 · Zasláno: 21. 1. 2009, 13:24:49
Zdravím
Chtěl bych se zeptat, jak správně zapsat Výběrový dotaz SQL s použitím PHP, tj, dotaz se bude měnit v závislosti na vyplněných polích formuláře. Zatím jsem laboroval s tímto: $sql = mysql_query("SELECT * FROM seznam" if (!empty($_POST['interpret'])) {.WHERE interpret= $_POST['interpret'] } "ORDER By id DESC"); Ale je tam chyba v syntaxi, zkoušel jsem použít spojovací operátor tečku ale dělám někde chybu. Vím, že jednoduší by bylo napsat výb. dotaz jen s použitím OR a AND a dopnňovat $_POST z formu, ale to bych přišel o pružnost toho vyhledávání. Díky za každou radu. |
||
martindeveloper Profil |
#2 · Zasláno: 21. 1. 2009, 13:32:22
$interpret = (!empty($_POST['interpret']) ? 'WHERE interpret = ' . $_POST['interpret'] : ''); $sql = mysql_query("SELECT * FROM seznam " . $interpret . " ORDER By id DESC"); Jinak bacha na SQL Injection ;) |
||
gardener Profil |
#3 · Zasláno: 21. 1. 2009, 13:40:43
martindeveloper:Díky za radu, jenom prosímtě k čemu jsou u deklarace $interpret, ty prázdné apostrofy za dvojtečkou?
|
||
bohyn Profil |
#4 · Zasláno: 21. 1. 2009, 13:49:31
gardener
Operator ?: musi vracet nejakou hodnotu, prazdne uvozovky = prazdny retezec - tedy platna hodnota pro vraceni |
||
gardener Profil |
#5 · Zasláno: 21. 1. 2009, 17:53:33
Tak bohužel jsem se opět zasekl,
pokud si napíši tento kód a testuji to i třeba jenom na where tj. $interpret = (!empty($_POST['interpret']) ? 'WHERE interpret = ' . $_POST['interpret'] : ''); $album = (!empty($_POST['album']) ? 'OR album = ' . $_POST['album'] : ''); $styl = (!empty($_POST['styl']) ? 'AND styl = ' . $_POST['album'] : ''); $rok_vydani = (!empty($_POST['rok_vydani']) ? 'OR rok_vydani = ' . $_POST['rok_vydani'] : ''); $sql = mysql_query("SELECT * FROM seznam " .$interpret." ORDER By id DESC"); if (!$sql) die('Nepodařilo se nám poslat SQL dotaz do databáze.'); Tak se mi nepodaří poslat SQL dotaz. |
||
bohyn Profil |
#6 · Zasláno: 21. 1. 2009, 17:59:15 · Upravil/a: bohyn
gardener
A co treba udelat echo mysql_error(); Edit: Chybi ti tam uvozovky |
||
gardener Profil |
#7 · Zasláno: 21. 1. 2009, 18:05:01
Pravda, omlouvám se
Zřejmě chyba v apostrofech. 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 'In flames ORDER BY id DESC' at line 1 |
||
Tomasds Profil |
#8 · Zasláno: 21. 1. 2009, 18:07:06
Kormě toho co píše bohyn
Před WHERE, OR, AND nemáš mezery. Takže dotaz pak vypadá takto: .. WHERE interpret = phil glassOR album = photographerAND styl = .... |
||
gardener Profil |
#9 · Zasláno: 21. 1. 2009, 20:46:17
Ty uvozovky chybí prosím kde?
Jedině mě napadá zde, ale to asi není pravda.. . $_POST['interpret'] |
||
Mastodont Profil |
#10 · Zasláno: 21. 1. 2009, 20:51:32
To tě napadá správně. Co třeba si výsledný SQL vypsat? Pak to hned uvidíš.
|
||
gardener Profil |
#11 · Zasláno: 21. 1. 2009, 20:54:22 · Upravil/a: gardener
Jenže když si napíši klasický SQL příkaz, tak to jde jedna báseň ale zde mě matou apostrofy...
EDIT: Vážně nevím, tahle by to mělo být správně ale není... $interpret = (!empty($_POST["interpret"]) ? " WHERE interpret = " .$_POST["interpret"] : ''); |
||
Časová prodleva: 15 let
|
0