Una muy buena idea es empezar leyendo las recomendaciones que expresa el
Manual de PHP: Inyección de SQL
¿Ya lo habías pensado?
Otra muy buena opción es no inventar la rueda de nuevo. hay muchísimos artículos sobre el tema.
Ver artículos de SQL injection
Lo siento, no pude evitarlo.
A nive de bases de datos, una de las mejores soluciones es
jamás enviar consultas, sino
usar stored procedures. Como los SP sólo aceptan parámetros, y los parámetros sólo ingresan como valores a las consultas internas, no pueden alterarlas. Solamente pueden devolver resultados nulos.