Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Instruções preparadas PDO/MYSQL não escapam caracteres?


Declarações preparadas não escapam a nada. Quando você prepara uma instrução, sua consulta é pré-compilada, para que ela precise apenas dos espaços reservados ( ? ) a ser preenchido. Como não há como alterar o SQL da consulta pré-compilada, nenhum escape é necessário.

Para corrigir isso, escape % e _ manualmente.

Adicionado:

Um pouco de raciocínio de bom senso:no seu caso, quando um usuário insere % em uma caixa de pesquisa, seu $search variável contém a string %%% . Como o MySQL saberia, qual % deve escapar, e qual deve deixar em paz?