Maison  >  Article  >  base de données  >  PDO MySQL : Comment insérer plusieurs lignes dans une requête sans erreur « Conversion de tableau en chaîne » ?

PDO MySQL : Comment insérer plusieurs lignes dans une requête sans erreur « Conversion de tableau en chaîne » ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-07 04:57:02631parcourir

PDO MySQL: How to Insert Multiple Rows in One Query Without

PDO MySQL : insérer plusieurs lignes dans une seule requête

Question :

Dans une classe PDO conçue pour les insertions multiples, malgré la création d'une requête paramétrée, une erreur « Conversion de tableau en chaîne » se produit lors de l'exécution de la requête. Comment cette erreur peut-elle être résolue ?

Réponse :

Pour résoudre cette erreur, une approche consiste à parcourir le tableau de données et à lier les valeurs une par une en utilisant bindValue au lieu de lier l'ensemble du tableau. Cela garantit que chaque valeur est correctement liée à un paramètre spécifique.

Voici un exemple de mise en œuvre de cette approche :

$query = "INSERT INTO $table (key1, key2, key3) VALUES ";
$qPart = array_fill(0, count($data), "(?, ?, ?)");
$query .= implode(",", $qPart);
$stmt = $this->start->prepare($query);
$i = 1;
foreach ($data as $item) { 
    $stmt->bindValue($i++, $item['key1']);
    $stmt->bindValue($i++, $item['key2']); 
    $stmt->bindValue($i++, $item['key3']);
}
$stmt->execute();

Vous pouvez également utiliser la boucle foreach à l'intérieur de l'instruction préparer pour lier les valeurs de chaque ligne :

$stmt = $pdo->prepare("INSERT INTO foo VALUES (1, 2, 3)");
foreach($data as $item) {
    $stmt->execute($item);
}

Cette approche exécute la requête plusieurs fois, une pour chaque ligne. Cependant, elle est plus simple à mettre en œuvre que l'ancienne approche.

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