sql >> Base de Datos >  >> RDS >> Mysql

¿Declaraciones preparadas de PDO/MYSQL que no escapan de los caracteres?

Las declaraciones preparadas no escapan a nada. Cuando prepara una declaración, su consulta se precompila, por lo que solo necesita los marcadores de posición ( ? ) para completar. Dado que no hay forma de cambiar el SQL de la consulta precompilada, no es necesario escapar.

Para arreglar esto, escape % y _ manualmente.

Añadido:

Un poco de razonamiento de sentido común:en su caso, cuando un usuario ingresa % en un cuadro de búsqueda, su $search la variable contiene la cadena %%% . ¿Cómo sabría MySQL, qué % debe escapar y cuáles debe dejar en paz?