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?