Use instruções preparadas em vez de misturar a instrução e os dados reais de carga útil.
Vejo
- http://dev.mysql.com/ tech-resources/articles/4.1/prepared-statements.html
- PDO::prepare
- mysqli::prepare
Você também pode estar interessado em http://shiflett.org/articles/sql-injection e http://shiflett.org/blog/2007/sep/ a injeção-sql-inesperada