sql >> Base de Datos >  >> RDS >> Mysql

Inserción masiva de MySQL a través de PHP

Si usa una declaración preparada, puede recorrer su $JSON_data matriz con un bucle foreach y ejecute INSERT con esa parte de los datos.

El uso de declaraciones preparadas reducirá la sobrecarga de la construcción de la consulta, simplemente enviando los nuevos datos a la base de datos en cada iteración del bucle.

$query = mysqli_prepare("INSERT INTO `MyTable` (`col1`,`col2`,`col3`)
    VALUES(?,?,?)");

foreach($JSON_data as $key => $value) {
    $query->bind_param('sss',$value["prop1"],$value["prop2"],$value["prop3"];
    $query->execute();
}

Tenga en cuenta que el primer argumento de bind_param() le dice cuántos valores vinculará, así como el tipo de cada valor.
s corresponde a datos de cadena, i corresponde a datos enteros, d corresponde a double (coma flotante), y b corresponde a datos binarios.

Otra advertencia:NO cite cualquier dato de cadena, como los s datatype le dice a mysql que espere una cadena. Si cita el ? en la declaración preparada, le dirá que la cantidad de parámetros es incorrecta. Si cita las cadenas, se citará en mysql.

EDITAR:

Si desea utilizar el mismo paradigma (insertar varias filas con una consulta), existen formas de hacerlo. Una forma es crear una clase que agregue el bind_param llama y hace un bind_param cuando ejecuta la consulta. El código para eso está aquí .