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 ?

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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-06 22:05:02760parcourir

How can I insert multiple rows of data into a database using a single prepared statement with 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 :

  1. Construisez la clause VALUES : Joignez plusieurs ensembles de valeurs en utilisant des parenthèses et des virgules. Par exemple, les valeurs de trois lignes ressembleraient à : ('abc', 'def', 'ghi'), ('abc', 'def', 'ghi'), ('abc', 'def', 'ghi' ').
  2. Générer le modèle d'espace réservé : Remplissez un tableau avec des espaces réservés (?) pour chaque valeur à insérer. Pour trois lignes de trois colonnes chacune, cela serait (?, ?, ?), (?, ?, ?), (?, ?, ?).
  3. 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 (?, ?, ?), (?, ?, ?), (?, ?, ?)
  4. 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!

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