NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: MySQL výběr dat - LIKE syntaxe

V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
Petr
Člen
Avatar
Petr:7.2.2019 15:13

Ahoj, potřebuju nahradit tenhle dotaz bezpečnějším řešením.

public function vratVyber()
        {
                return Db::dotazVsechny("
                        SELECT *
                        FROM `clanky`
                        WHERE `titulek` LIKE '%".$_POST['search']."%'
                ");

Zkusil jsem:

return Db::dotazVsechny("
                        SELECT *
                        FROM clanky
                        WHERE titulek LIKE ?
                ", array($_POST['search']));
        }

Chci docílit: Kolem "otazníku" potřebuju doplnit zástupné znaky "procent" tak, aby dotaz vrátil stejné výsledky jako v 1. dotazu, nejenom výsledky přesně shodné s proměnnou. Zaboha se mi nedaří správná syntaxe.

 
Odpovědět
7.2.2019 15:13
Avatar
Odpovídá na Petr
Michal Šmahel:7.2.2019 15:32

Ahoj, je to obvyklý problém spočívající ve formátu vložených dat. Existují dvě řešení:

Úprava SQL dotazu:

SELECT *
FROM `clanky`
WHERE `titulek` LIKE CONCAT('%', ?, '%')

Připojení zástupných znaků přímo k řetězci:

return Db::dotazVsechny("
        SELECT *
        FROM clanky
        WHERE titulek LIKE ?
    ", ['%' . $_POST['search'] . '%']);
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
7.2.2019 15:32
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Petr
Člen
Avatar
Petr:7.2.2019 15:52

Díky, ta "CONCAT" verze funguje.

Ale ta druhá vyhodí "Notice: Undefined index: ..."

 
Nahoru Odpovědět
7.2.2019 15:52
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 3 zpráv z 3.