urlencode()
não tem nada para fazer com SQL, por isso faz tanto para evitar a injeção de SQL quanto o querosene para deixar seus hambúrgueres mais deliciosos. Além disso, tudo o que entrar em seu banco de dados terminará codificado em URL, que você terá que decodificar se quiser fazer algo útil com eles depois de recuperar o banco de dados. Escapar de suas consultas, por outro lado, ajuda seu aplicativo a se proteger contra injeção de SQL e nada mais. Ele não modifica os dados você entra em suas consultas; ele apenas protege suas consultas de ser adulterado. Essa é a ideia da injeção de SQL, e também é por isso que a codificação de URL de seus dados não faz nada para protegê-los. Concedido, ele faz transforme seus apóstrofos
'
em %27
, tornando-os inofensivos, mas como mencionado no parágrafo acima, você terá que decodificá-los de volta em apóstrofos para usá-los. Use a ferramenta certa para o propósito certo. Especialmente no ano de 2011, você deve usar instruções preparadas em vez de escapar manualmente de suas variáveis de consulta e concatenar strings para formar consultas.