Insertion de plusieurs lignes avec une seule instruction préparée dans MySQLi
Problème :
Insérer plusieurs lignes dans une base de données à l'aide d'une instruction préparée, évitant ainsi le besoin de requêtes distinctes pour chaque ligne.
Solution :
Bien que les instructions préparées gèrent généralement des opérations sur une seule ligne, il est possible pour insérer plusieurs lignes à l'aide d'une syntaxe et d'une méthodologie de requête spéciales.
Approche :
Exemple de code :
<code class="php">$rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; $rowCount = count($rows); $values = "(&" . implode('),(', array_fill(0, $rowCount, '?,?,?')) . "&)"; $stmt = $conn->prepare("INSERT INTO test (col1, col2, col3) VALUES $values"); $stmt->bind_param(str_repeat('i', $rowCount * 3), ...array_merge(...$rows)); $stmt->execute();</code>
Approche alternative :
Il est également acceptable d'utiliser une instruction préparée avec une seule ligne de des espaces réservés et exécutez-le en boucle pour chaque ligne, ce qui est plus simple mais potentiellement moins efficace.
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!