Maison >base de données >tutoriel mysql >Comment insérer efficacement plusieurs lignes dans une table MySQL à l'aide de PHP et PDO ?
Insertion de tableaux dans MySQL avec PHP et PDO
Lors de l'initialisation des programmes en ligne, les clients peuvent s'inscrire à plusieurs programmes représentés par des entiers à trois chiffres et stocké dans un tableau. Par exemple, pour s'inscrire aux programmes 155, 165, 175 et 185, le tableau suivant serait utilisé :
<code class="php">$data = array(155, 165, 175, 185);</code>
Traditionnellement, on créerait une boucle pour exécuter plusieurs instructions INSERT, telles que :
<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, la création d'une seule instruction SQL dynamique est considérée comme plus efficace. Une solution possible serait :
<code class="php">$sql = array(); foreach( $data as $row ) { $sql[] = '("'.$memberid.'", "'.$row[$j].'", NOW()")'; } mysql_real_query('INSERT INTO table (memberid, programid) VALUES '.implode(',', $sql));</code>
Avec PDO, une approche plus appropriée est :
<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 technique permet d'insérer plusieurs lignes dans une table de base de données à l'aide d'une seule instruction préparée, réduisant ainsi le nombre d'appels à la base de données et l'amélioration des performances.
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!