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

Quando eu escapo toda a entrada, às vezes ele deixa barras (\) na string e a insere no banco de dados. Por que isso acontece e como posso resolver isso?


Você está certo.
aspas mágicas não têm nada a ver com coisas sql e não devem ser conectadas a elas.
Porque aspas mágicas são um problema em todo o site e o escape de sql é apenas um problema relacionado a sql.

Portanto, eles precisam de tratamento diferenciado e nunca devem ser usados ​​em conjunto.

Você tem que se livrar das citações mágicas incondicionalmente, porque isso estraga não apenas as coisas do SQL, mas toda a manipulação de dados do seu site.

Portanto, seria sensato colocar algum código stripslashes em qualquer arquivo de bootstrap a ser executado em cada chamada do script. O código você pode encontrar em várias implementações de tal código, basta pesquisar no google pela função 'stripslashes_deep'.

Seria sensato ter esse código sempre executado (claro sob a condição de verificação get_magic_quotes_gpc()) apesar do estado real das aspas mágicas, apenas por uma questão de compatibilidade.

Mas existe outra possibilidade de desativá-los:tente criar um arquivo php.ini na raiz da sua aplicação.

No entanto, há um erro grave em seu código. Na verdade, ele não protege nada.
Você está escapando de $memberid e $postid mas não os cite! . Assim, não há proteção alguma. Só porque o escape funciona apenas quando usado com aspas.

Por favor lembre-se:

Escape não é sinônimo de segurança!


Escapar sozinho não pode ajudar em nada. Há todo um conjunto de regras a serem seguidas.

Eu escrevi uma explicação decente recentemente, então não me repetiria:Substituindo funções mysql_* por PDO e instruções preparadas