Maison  >  Article  >  développement back-end  >  Comment effectuer efficacement l'insertion de plusieurs lignes dans MySQLi à l'aide d'instructions préparées ?

Comment effectuer efficacement l'insertion de plusieurs lignes dans MySQLi à l'aide d'instructions préparées ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-20 16:35:29533parcourir

How to Perform Multiple Row Insertion Effectively in MySQLi Using Prepared Statements?

Insertion de plusieurs lignes dans MySQLi à l'aide d'instructions préparées

Lorsqu'il s'agit d'insertion de données en masse, la construction d'une seule requête avec plusieurs lignes peut être plus efficace que l'exécution de plusieurs requêtes distinctes. Cependant, l'utilisation d'instructions préparées pour l'insertion de plusieurs lignes nécessite une approche légèrement différente.

Création de l'instruction avec plusieurs lignes

Pour insérer plusieurs lignes à l'aide d'une instruction préparée, vous pouvez exploiter la méthode de concaténation de chaînes :

<code class="php">$rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
$rowCount = count($rows);
$values = "(" . implode('),(', array_fill(0, $rowCount, '?,?,?')) . ")";

$stmt = $mysqli->prepare("INSERT INTO table (col1, col2, col3) VALUES $values");</code>

Ici, la variable $values ​​crée la partie de la requête contenant les valeurs de ligne au format (?, ?, ?), (?, ?, ?), ....

Liaison et exécution

Une fois l'instruction préparée, les valeurs peuvent être liées et l'instruction peut être exécutée. Cependant, notez que bind_param s'attend à ce que tous les paramètres soient transmis sous la forme d'un seul tableau, les plusieurs lignes doivent donc être aplaties et décompressées à l'aide de la méthode array_merge(...$rows) :

<code class="php">$stmt->bind_param(str_repeat('i', $rowCount * 3), ...array_merge(...$rows));
$stmt->execute();</code>

Cette approche vous permet pour effectuer plusieurs insertions de lignes en un seul accès à la base de données, améliorant ainsi l'efficacité des opérations d'insertion de données en masse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn