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

Susan Sarandon
Libérer: 2024-10-20 16:35:29
original
532 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!