Lo dije en un comentario, pero lo voy a volver a decir aquí.
Seguridad, Seguridad, SEGURIDAD.
Cuando el código sql está incrustado en su aplicación, debe exponer las tablas subyacentes al acceso directo. Este podría sonido bien al principio. Hasta que te golpeen con una inyección sql que codifica todos los campos varchar en tu base de datos.
Algunas personas pueden decir que lo solucionan mediante el uso de comillas mágicas o alguna otra forma de escapar correctamente de su sql incrustado. El problema, sin embargo, es la única consulta que un dev no escapó correctamente. O bien, el desarrollador que se olvidó de no permitir que se cargue el código. O bien, el servidor web que fue crackeado, lo que permitió al atacante cargar el código. O ... entiendes el punto. Es difícil cubrir todas tus bases.
Lo que quiero decir es que todas las bases de datos modernas tienen seguridad integrada. Simplemente puede denegar el acceso directo a la tabla (seleccionar, insertar, actualizar y eliminar) y forzar que todo pase por sus s'procs. Al hacerlo, los ataques genéricos ya no funcionarán. En cambio, el atacante debería tomarse el tiempo para aprender los detalles más íntimos de su sistema. Esto aumenta su "costo" en términos de tiempo pasado y deja de conducir y ataques de gusanos.
Sé que no podemos protegernos contra todo, pero si se toma el tiempo de diseñar sus aplicaciones para que el costo de descifrar supere con creces los beneficios, entonces va a reducir seriamente su potencial de pérdida de datos. Eso significa aprovechar todas las herramientas de seguridad disponibles para usted.
Finalmente, en cuanto a la idea de no usar s'procs porque es posible que tenga que portar a un rdbms diferente: Primero, la mayoría de las aplicaciones no cambian los servidores de bases de datos. En segundo lugar, en el caso de que sea una posibilidad real, debe codificar utilizando ANSI sql de todos modos; que puedes hacer en tus procs. Tercero, tendría que reevaluar todo su código sql sin importar qué y es mucho más fácil cuando ese código está en un solo lugar. En cuarto lugar, todas las bases de datos modernas ahora admiten s'procs. En quinto lugar, al usar s'proc's puede personalizar su sql para la base de datos en la que se está ejecutando para aprovechar las extensiones sql de esa base de datos en particular.
Sugiera eliminar la etiqueta php ya que php podría ser fácilmente cualquier otro lenguaje de programación. – Iain