Utilisation de PDO pour insérer un tableau dans une base de données MySQL avec une seule instruction préparée
Lors des inscriptions en ligne, il est courant de rencontrer des situations où les clients sélectionnent plusieurs programmes pour s’inscrire. Ces programmes peuvent être représentés sous la forme d'un tableau d'entiers à trois chiffres. Pour insérer ces tableaux dans une base de données, une seule instruction préparée peut être plus efficace que plusieurs exécutions.
Exemple de scénario
Considérons un tableau contenant les ID de programme suivants :
$data = [155, 165, 175, 185];
Approche de boucle traditionnelle
Une approche typique impliquerait d'itérer dans le tableau et d'exécuter plusieurs instructions INSERT :
<code class="php">for ($j = 0; $j < count($data) - 1; $j++) { $stmt = $db->prepare("INSERT INTO table SET memberID=?, programID=?, date_added=NOW()"); $stmt->execute(array($memberid, $data[$j])); }</code>
Cependant, cela La méthode est moins efficace qu'une seule instruction INSERT.
Instruction SQL dynamique
La création d'une seule instruction SQL dynamique est une option plus efficace :
<code class="php">$sql = 'INSERT INTO table (memberID, programID) VALUES '; $insertQuery = array(); $insertData = array(); foreach ($data as $row) { $insertQuery[] = '(?, ?)'; $insertData[] = $memberid; $insertData[] = $row; } if (!empty($insertQuery)) { $sql .= implode(', ', $insertQuery); $stmt = $db->prepare($sql); $stmt->execute($insertData); }</code>
Cette approche utilise PDO pour créer une seule instruction préparée en concaténant des espaces réservés avec les données appropriées. Il est important de valider le tableau $insertQuery avant d'exécuter l'instruction pour éviter les insertions vides.
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!