Anniversary - BF C/C++ week
80 % bodů zdarma na online výuku díky naší Narozeninové akci!
Pouze tento týden sleva až 80 % na e-learning týkající se C/C++

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

Aktivity (2)
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í
+1 bodů
Ř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.
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
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.