Připravená prohlášení nic neuniknou. Když připravíte příkaz, váš dotaz se předkompiluje, takže potřebuje pouze zástupné symboly ( ?
), které se má vyplnit. Protože neexistuje způsob, jak změnit SQL předkompilovaného dotazu, není potřeba žádné escapování.
Chcete-li tento problém vyřešit, escapujte %
a _
ručně.
Přidáno:
Trochu zdravého rozumu:Ve vašem případě, když uživatel zadá %
do vyhledávacího pole, vaše $search
proměnná obsahuje řetězec %%%
. Jak by MySQL věděl, které %
měla by uniknout a kterou by měla nechat na pokoji?