Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Vorbereitete PDO/MYSQL-Anweisungen, die Zeichen nicht maskieren?

Vorbereitete Statements entgehen nichts. Wenn Sie eine Anweisung vorbereiten, wird Ihre Abfrage vorkompiliert, sodass sie nur die Platzhalter benötigt ( ? ) auszufüllen. Da es keine Möglichkeit gibt, die SQL einer vorkompilierten Abfrage zu ändern, ist kein Escapezeichen erforderlich.

Um dies zu beheben, maskieren Sie % und _ manuell.

Hinzugefügt:

Ein bisschen gesunder Menschenverstand:In Ihrem Fall, wenn ein Benutzer % eingibt in ein Suchfeld, Ihre $search Variable enthält Zeichenfolge %%% . Woher soll MySQL wissen, welcher % es entkommen soll, und was es in Ruhe lassen soll?