Maison > base de données > tutoriel mysql > le corps du texte

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
Libérer: 2024-11-06 22:05:02
original
669 Les gens l'ont consulté

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);
Copier après la connexion

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 (?, ?, ?), (?, ?, ?), (?, ?, ?)
    Copier après la connexion
  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
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!