Autor | Zpráva | ||
---|---|---|---|
siok Profil |
#1 · Zasláno: 24. 11. 2018, 08:54:49
Mám tento dotaz:
$query = $pdo->prepare("SELECT * FROM ".DBPREFIX."product INNER JOIN ".DBPREFIX."stock ON (pro_id=sto_pro_id) WHERE sto_ean = :ean AND pro_id = :kod"); $query->execute(array(":ean"=>$_POST['n_ean'],":kod"=>$_POST['n_kod'])); |
||
Ikki Profil |
#2 · Zasláno: 24. 11. 2018, 09:29:52
WHERE pro_id IS NULL, ale nejsem si jistý.
|
||
siok Profil |
#3 · Zasláno: 24. 11. 2018, 10:48:47
Ikki:
v databázi je n_kod vždy vyplněný. Jen ten produkt chci vyhledat bud podle Kodu ($_POST['n_kod']) nebo EAN ($_POST['n_ean']). Přes formulář odešlu jednou dotaz aby vyhledal podle kodu a jednou podle EAN. Tak jak to mám ted napsaný to bude fungovat jen když odešlu jak kod tak EAN naráz. |
||
Kajman Profil |
#4 · Zasláno: 24. 11. 2018, 11:11:17
Nejlepší je upravovat dotaz a pokud se podle toho sloupce filtrovat nemá, vůbec ho ve where části nepoužívat.
|
||
siok Profil |
#5 · Zasláno: 24. 11. 2018, 11:29:03
Kajman:
Děkuji, ale to co jste mi poradil tak vím, ale přesně na toto jsem se ptal jak to udělat. Nejde mi o to aby mě to někdo přesně napsal ale rozumě navedl. |
||
Keeehi Profil |
#6 · Zasláno: 24. 11. 2018, 12:02:02
Základ by mohl vypadat takto
$conditions = []; $parameters = []; if(!empty($_POST['n_ean'])) { $conditions[] = "sto_ean = :ean"; $parameters[":ean"] = $_POST['n_ean']; } if(!empty($_POST['n_kod'])) { $conditions[] = "pro_id = :kod"; $parameters[":kod"] = $_POST['n_kod']; } $sql = "SELECT * FROM ".DBPREFIX."product INNER JOIN ".DBPREFIX."stock ON (pro_id=sto_pro_id)"; if(!empty($conditions)) { $sql .= " WHERE ".implode(" AND ", $conditions); } $query = $pdo->prepare($sql); $query->execute($parameters); Nejsem si jistý jak se chová execute v případě že dostane prázdné pole. Pokud by to byl problém, tak se to dá nahradit $query->execute(empty($parameters) ? null : $parameters); |
||
siok Profil |
#7 · Zasláno: 25. 11. 2018, 21:53:00
Keeehi:
díky funguje to skvělo |
||
Časová prodleva: 5 let
|
0