Zmenenie literálu "" na '' pri SELECT-e

Aris
Člen | 48
+
0
-

Ahoj, nedokážem si vysvetliť zmenu literálov v SQL. Kvôli tomu dostávam správny SELECT pre 1 písmenový výraz, pre viac písmenové literál pribudne.

public function ajaxSearch($query)
{
    bdump($query);
    $result = $this->database->table("potraviny_n")
        ->select("*")
        ->where("nazov LIKE ". "'%".$query."%'");
        bdump($result->getSql());
        bdump($result->fetchAll());

    //return $result->fetchPairs('nazov');
}

Pre 1 písmeno je všetko v poriadku

"SELECT * FROM `potraviny_n` WHERE (`nazov` LIKE '%C%')"

Pre celú query pribudol ďalší literál '', ktorý kazí príkaz.

"SELECT * FROM `potraviny_n` WHERE (`nazov` LIKE '%`Ca`%')"

Ako to okabátiť v Nette? Ďakujem :)

Editoval Aris (12. 11. 2018 20:35)

Phalanx
Člen | 310
+
+1
-

->where("nazov LIKE ?", "%" . $query. "%");

Editoval Phalanx (12. 11. 2018 20:35)

MajklNajt
Člen | 502
+
0
-

priamym zápisom (bez použitia parametra) si koleduješ o SQL inject…

Aris
Člen | 48
+
0
-

Ďakujem za pohotovú a rýchlu odpoveď obom. Obzvlášť za opomenutie :) . Priebežne sa učím bezpečnosti. Máš prosím ťa prípadne nejaký tip, kde sa dá rozšíriť obzory o bezpečnosti v Nette okrem https://doc.nette.org/…y-protection , prípadne samotných nástrojoch ako je Purifier?