Diskuze: SQL dotaz where
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, bavíš se o prázdných PHP proměnných, nebo prázdných SQL
sloupcích?
Celý koncept, jak konstruuješ SQL dotaz je úplně špatně, musíš použít
něco, co tě zabezpečí před SQL injekcí
Používáš nějaký framework, nebo čisté PHP?
Ahoj, používám čisté PHP a na Db používám tu knihovnu co tu někdo psal. Bavím se o tom že by proměná měla nějakou defaultní hodnotu dle které by sql poznalo že ji má ignorovat. Něco jako: pokud proměná má hodnotu 0, což nenajde v daném sloupci, jelikož tam není tak prostě výtahne všechny položky, respektive ji bude ignorovat a postupovat k dalším proměným zda mají hodnotu či nikoli. V zásadě je to filtr položek z db.
Jinak já vím že bych neměl do toho dotazu cpát proměnné a i vím jak ho přepsat. jen nevím jak tohle odfiltrovat aby se to chovalo jak potřebuji, zda se nějak dá dotaz sestavit na to nebo je třeba nějak ifovat proměnné v kodu abych to neděla zbytečně.
WHERE (vyrobce LIKE '%$vyrobcePolozky%' OR vyrobce IS NULL OR vyrobce = '0') and category LIKE ...
Tak nějak?
Tak sestavil jsem ten dotaz nějak takhle dle tvého příladu:
"SELECT name, code, pairCode, id_polozka FROM $tabKlienta
WHERE (vyrobce LIKE '%$vyrobcePolozky%' OR vyrobce IS NULL OR vyrobce = '0')
AND
(category LIKE '%$categoriePolozky%' OR category IS NULL OR category = '0')
AND
stav_polozky = '$stavPolozky' GROUP BY pairCode LIMIT ?, ?", ($strana - 1) *
$naStranu, $naStranu);
A chová se to tak že když určím vyrobcePolozky i categoriePolozky tak se to odfiltruje spravně. Ale pokud je jedna z nich nebo obě null nebo 0 tak neodfitlruje nic. Což je špatně. $stavPolozky netřeba řešit, ten je určen vždy.
Zobrazeno 8 zpráv z 8.