Mysql
 sql >> Base de données >  >> RDS >> Mysql

Insertion groupée MySQL via PHP

Si vous utilisez une instruction préparée, vous pouvez parcourir vos $JSON_data tableau avec une boucle foreach et exécutez le INSERT avec ce morceau de données.

L'utilisation d'instructions préparées réduira la surcharge de construction de la requête, en envoyant simplement les nouvelles données à la base de données à chaque itération de la boucle.

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

Notez que le premier argument de bind_param() lui indique le nombre de valeurs que vous allez lier, ainsi que le type de chaque valeur.
s correspond aux données de chaîne, i correspond à une donnée entière, d correspond à double (virgule flottante), et b correspond à des données binaires.

Un autre mot d'avertissement, ne le faites PAS cite toutes les données de chaîne, comme les s datatype indique à mysql d'attendre une chaîne. Si vous citez le ? dans la déclaration préparée, il vous dira que le nombre de paramètres est erroné. Si vous citez les chaînes, elles seront citées dans mysql.

MODIF :

Si vous souhaitez utiliser le même paradigme (insérer plusieurs lignes avec une seule requête), il existe des moyens de le faire. Une façon consiste à créer une classe qui regroupera le bind_param appels et effectuez un bind_param lorsque vous exécutez la requête. Le code pour cela est ici .