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!