Autor | Zpráva | ||
---|---|---|---|
Exonic Profil * |
#1 · Zasláno: 11. 2. 2015, 12:10:18
Zdravím,
Potřeboval bych složit dotaz: SELECT * FROM maily WHERE jmeno='Jan' OR prijmeni='Novak' OR mesto='Brno' Chci se zeptat jak elegantně vyřešit vkládání podmínek za WHERE aby tam nepřebývalo OR. Mám to nyní takto: echo "SELECT * FROM maily WHERE ".(isset($jmeno) ? "jmeno='".$jmeno."' OR" : "").(isset($prijmeni) ? "prijmeni='".$prijmeni."' OR" : "").(isset($mesto) ? "mesto='".$mesto."'" : "") Existuje prosím nějaký jednoduchý způsob jak to vyřešit? Moc děkuji za odpověď |
||
Dan Charousek Profil |
#2 · Zasláno: 11. 2. 2015, 12:13:14
Tak OR vkládej před podmínku:
echo "SELECT * FROM maily WHERE ".(isset($jmeno) ? "jmeno='".$jmeno."' " : "").(isset($prijmeni) ? "OR prijmeni='".$prijmeni."' " : "").(isset($mesto) ? "OR mesto='".$mesto."'" : ""); |
||
lionel messi Profil |
Exonic:
Mohlo by stačiť presunúť OR do inej podmienky takto:
echo "SELECT * FROM maily WHERE ".(isset($jmeno) ? "jmeno='".$jmeno : "").(isset($prijmeni) ? " OR prijmeni='".$prijmeni : "").(isset($mesto) ? " OR mesto='".$mesto."'" : "") Príklad počíta s tým, že jmeno je zadané vždy. |
||
Exonic Profil * |
#4 · Zasláno: 11. 2. 2015, 12:16:57
Dan Charousek, lionel messi:
Jasně, problém je, že ono i to jmeno nemusí existovat. Pak by vzniklo WHERE OR :/ |
||
juriad Profil |
$conditions = array(); $conditions[] = "jmeno='" . $jmeno . "'"; $conditions[] = "prijmeni='" . $prijmeni . "'"; $conditions[] = "mesto='" . $mesto . "'"; $where = implode(' OR ', $conditions); Nebo: $where = "1=0"; # vždy nesplněno $where .= isset($jmeno) ? " OR jmeno='" . $jmeno . "'" : ""; $where .= isset($prijmeni) ? " OR prijmeni='" . $prijmeni . "'" : ""; $where .= isset($mesto) ? " OR mesto='" . $mesto . "'" : ""; |
||
Alphard Profil |
Jo, to by mohlo fungovat, než se někdo bude jmenovat O'Neill apod. A hádám že používáte extenzi mysql_* a učíte se podle 10 let starého návodu.
Můj pohled na věc viz Dotaz do tabulky s různými vstupy do klauzule WHERE. |
||
Časová prodleva: 9 let
|
0