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?