Mysql
 sql >> Database >  >> RDS >> Mysql

Inserimento in blocco MySQL tramite PHP

Se utilizzi un'istruzione preparata, puoi scorrere i tuoi $JSON_data array con un ciclo foreach ed eseguire INSERT con quel pezzo di dati.

L'utilizzo di istruzioni preparate ridurrà il sovraccarico della creazione della query, inviando semplicemente i nuovi dati al database ad ogni iterazione del ciclo.

$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();
}

Nota che il primo argomento di bind_param() indica quanti valori collegherai, nonché il tipo per ciascun valore.
s corrisponde a dati stringa, i corrisponde a dati interi, d corrisponde a double (virgola mobile) e b corrisponde a dati binari.

Un'altra parola di cautela, NON cita qualsiasi dato stringa, come s datatype dice a MySQL di aspettarsi una stringa. Se citi il ​​? nella dichiarazione preparata, ti dirà che il numero di parametri è sbagliato. Se citi le stringhe, verrà citato in mysql.

MODIFICA:

Se vuoi utilizzare lo stesso paradigma (inserimento di più righe con una query), ci sono modi per farlo. Un modo è creare una classe che aggreghi il bind_param chiama ed esegui un bind_param quando esegui la query. Il codice è qui .