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?