Voorbereide verklaringen ontsnappen aan niets. Wanneer u een instructie voorbereidt, wordt uw query vooraf gecompileerd, zodat deze alleen de tijdelijke aanduidingen nodig heeft ( ?
) in te vullen. Aangezien er geen manier is om de SQL van de voorgecompileerde query te wijzigen, is er geen escape nodig.
Om dit op te lossen, escape %
en _
handmatig.
Toegevoegd:
Een beetje gezond verstand redenering:in jouw geval, wanneer een gebruiker %
. invoert in een zoekvak, uw $search
variabele bevat string %%%
. Hoe zou MySQL weten, welke %
het moet ontsnappen en wat het met rust moet laten?