Förberedda uttalanden undgår ingenting. När du förbereder en sats förkompileras din fråga, så att den bara behöver platshållarna ( ? ) som ska fyllas i. Eftersom det inte finns något sätt att ändra SQL för den förkompilerade frågan, behövs ingen escape.
För att åtgärda detta, escape % och _ manuellt.
Lade till:
Lite sunt förnuftsresonemang:I ditt fall, när en användare anger % i en sökruta, din $search variabeln innehåller strängen %%% . Hur skulle MySQL veta vilken % den ska fly, och vilken ska den lämna ifred?