Maison >base de données >tutoriel mysql >Comment puis-je insérer plusieurs lignes de données dans une base de données à l'aide d'une seule instruction préparée avec PDO ?
Insertion de plusieurs lignes avec des instructions préparées PDO
L'insertion de plusieurs lignes de données dans une base de données à l'aide d'une seule instruction préparée est possible. Les instructions préparées améliorent la sécurité et l'efficacité en empêchant les attaques par injection SQL et en optimisant l'exécution des requêtes.
Considérez l'exemple suivant pour insérer des données dans une table nommée « Table » avec les colonnes « col1 », « col2 » et « col3 ». :
$params = array(); $params[':val1'] = "val1"; $params[':val2'] = "val2"; $params[':val3'] = "val3"; $sql = "INSERT INTO table VALUES (col1, col2, col3) VALUES (:val1,:val2,:val3)"; $stmt = DB::getInstance()->prepare($sql); $stmt->execute($params);
Si plusieurs lignes doivent être insérées, l'approche suivante peut être mise en œuvre :
Combinez le SQL Déclaration : Ajoutez le modèle d'espace réservé en tant que clause VALUES à la requête INSERT. L'instruction finale serait :
INSERT INTO Table (col1, col2, col3) VALUES (?, ?, ?), (?, ?, ?), (?, ?, ?)
Préparer et exécuter : Préparez l'instruction étendue à l'aide de PDO. Exécutez l'instruction en passant un tableau avec toutes les valeurs à insérer dans le même ordre que les espaces réservés.
$rows = array( array('abc', 'def', 'ghi'), array('abc', 'def', 'ghi'), array('abc', 'def', 'ghi') ); // Your code here as explained in the full response
L'avantage de cette approche est qu'elle combine toutes les valeurs dans un requête INSERT unique tout en conservant les avantages de sécurité et d'optimisation des instructions préparées.
Pour les scénarios impliquant un grand nombre de lignes, il peut être plus efficace d'utiliser une boucle pour les insérer une par une. Cela garantit de meilleures performances et évite les problèmes de mémoire potentiels.
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!