Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Swiftu. Zároveň využij výhodnou slevovou akci až 30 % zdarma při nákupu e-learningu - více informací.
discount 30 + hiring
Avatar
jakubho
Člen
Avatar
jakubho:26.5.2018 23:23

Zdravím :-)

Používám zdejší wrapper z tutoriálů, a vím, že když mám nějaký vstup od uživatele, tak do dotazu v SQL hodím otazník a za dotaz pak až dám proměnou, např. takto:

Db::queryAll('SELECT * FROM uzivatele WHERE vek = ?', $vek);

Otázka je, co mám dělat, když mám něco jako toto:

SELECT * FROM `works` WHERE `name` LIKE '%nějakýtext%'

No a "nějakýtext" je uživatelův vstup, tedy bych to chtěl stejným způsobem ošetřit tak, že tam dám otazník a pak za query příslušnou proměnou. Problém je v tom, že '%nějakýtext%' je uvnitř apostrofů a pokud udělám '%?%' tak to nepočítá otazník jako zástupný symbol, ale prostě to vyjede tu query s tím otazníkem...

Děkuji :-)

Odpovědět
26.5.2018 23:23
Chyba-Jediná jistota v životě programátora.
Avatar
Odpovídá na jakubho
Martin Konečný (pavelco1998):26.5.2018 23:42

Ahoj, řešení je jednoduché

Db::queryAll('SELECT * FROM uzivatele WHERE vek = ?', "%{$vek}%");

Případně s apostrofy

Db::queryAll('SELECT * FROM uzivatele WHERE vek = ?', '%' . $vek . '%");
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
26.5.2018 23:42
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
jakubho
Člen
Avatar
Nahoru Odpovědět
27.5.2018 11:08
Chyba-Jediná jistota v životě programátora.
Avatar
Odpovídá na jakubho
Martin Konečný (pavelco1998):27.5.2018 13:57

Jen tak btw, na co potřebuješ v databázi ukládat věk uživatele, který se každoročně mění? Není lepší si uložit datum narození a věk z toho spočítat?

Nahoru Odpovědět
27.5.2018 13:57
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
jakubho
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
jakubho:28.5.2018 10:03

Jo, to by určitě bylo lepší, ale tohle je jen příklad, ve skutečnosti v tý databázi pro kterou to potřebuju nemám věk, ale něco jiného... Tohle mě jen tak rychle napadlo abych to tady mohl vysvětlit ;-)

Nahoru Odpovědět
28.5.2018 10:03
Chyba-Jediná jistota v životě programátora.
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na jakubho
Martin Konečný (pavelco1998):28.5.2018 13:34

Ok, v pořádku, jen mě to tak napadlo :)

Nahoru Odpovědět
28.5.2018 13:34
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:28.5.2018 16:13

Jeste bych mozna v php odmazal nadbytecne % a * ze zacatku a konce. Uzivatele obcas nevi, jak rici, ze chteji pouzit like, nevidi dovnitr programu.

 
Nahoru Odpovědět
28.5.2018 16:13
Avatar
jakubho
Člen
Avatar
Odpovídá na Peter Mlich
jakubho:29.5.2018 10:39

Co přesně myslíš? Jako, že nemám používat LIKE pokud jde o vstup od uživatele? Nechápu...

Nahoru Odpovědět
29.5.2018 10:39
Chyba-Jediná jistota v životě programátora.
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29.5.2018 13:56

V sql query davas:
... sloupec LIKE '%slovo%'
No, a ted jsou uzivatele, co zkousi pridat * nebo % do inputu, napr
<input value="%slovo"> nebo <input value="*slovo">
... sloupec LIKE '%%slovo%' | ... sloupec LIKE '%*slovo%'
Oni nevidi php kod, tak nevi, ze tam s like pracujes.
Cili, mozna (zalezi na datech), bych z te promenne mazal ze zacatku a z konce znaky * a %. Neco jako dela php trim() pro mezery.
Je to zbytecnost navic, ale muze se to obcas hodit.

 
Nahoru Odpovědět
29.5.2018 13:56
Avatar
jakubho
Člen
Avatar
Odpovídá na Peter Mlich
jakubho:29.5.2018 19:35

Jasně, to je dobrý point :-) Sloupec ve kterém se bude hledat by tyto znaky stejně obsahovat asi neměl, takže to není problém mazat :-) Nicméně asi i upozorním uživatele, že jsou tyto znaky zakázané, pokud se je tam pokusí hodit.

Nahoru Odpovědět
29.5.2018 19:35
Chyba-Jediná jistota v životě programátora.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.