Cómo escribir una buena base de datos PHP insertando una matriz asociativa

En PHP, quiero insertarlo en una base de datos utilizando datos contenidos en una matriz asociativa de pares de campos / valores.

Ejemplo:

$_fields = array('field1'=>'value1','field2'=>'value2','field3'=>'value3');

La inserción SQL resultante debe tener el siguiente aspecto:

INSERT INTO table (field1,field2,field3) VALUES ('value1','value2','value3');

He venido con el siguiente PHP de una sola línea:

mysql_query("INSERT INTO table (".implode(',',array_keys($_fields)).") VALUES (".implode(',',array_values($_fields)).")");

Separa las claves y valores de la matriz asociativa yimplodes para generar una cadena separada por comas. El problema es que no escapa ni cita los valores que se insertaron en la base de datos. Para ilustrar el peligro, imagina si$_fields Contenía lo siguiente:

$_fields = array('field1'=>"naustyvalue); drop table members; --");

Se generaría el siguiente SQL:

INSERT INTO table (field1) VALUES (naustyvalue); drop table members; --;

Por suerte,no se admiten consultas múltiplesSin embargo, la cita y el escape son esenciales para prevenir las vulnerabilidades de inyección de SQL.

¿Cómo escribes tu PHP Mysql Inserts?

Nota: las consultas preparadas de PDO o mysqli no son actualmente una opción para mí porque el código base ya usa mysql ampliamente. ¿Se planea un cambio pero se necesitarían muchos recursos para convertir?

Respuestas a la pregunta(7)

Su respuesta a la pregunta