urlencode()
non ha niente da fare con SQL, quindi fa tanto per prevenire l'iniezione SQL quanto il cherosene per rendere i tuoi hamburger più deliziosi. Inoltre, tutto ciò che entra nel tuo database finirà per essere codificato in URL, che dovrai quindi decodificare se vuoi fare qualcosa di utile con loro dopo aver recuperato il database.
L'escape delle tue query, d'altra parte, aiuta la tua applicazione a proteggersi dall'iniezione di SQL e nient'altro. Non modifica i dati entri nelle tue domande; protegge solo le tue query dall'essere manomessi. Questa è l'idea dell'iniezione SQL, ed è anche il motivo per cui la codifica degli URL dei dati non fa nulla per proteggerli. Certo, lo fa trasforma i tuoi apostrofi '
in %27
, rendendoli innocui, ma come menzionato nel paragrafo precedente, dovrai decodificarli di nuovo in apostrofi URL per poterli utilizzare.
Usa lo strumento giusto per lo scopo giusto. Soprattutto nell'anno 2011, dovresti utilizzare istruzioni preparate invece di eseguire manualmente l'escape delle variabili di query e concatenare stringhe per formare query.