Maison > base de données > tutoriel mysql > Comment puis-je insérer efficacement plusieurs lignes dans MySQLi tout en empêchant l'injection SQL ?

Comment puis-je insérer efficacement plusieurs lignes dans MySQLi tout en empêchant l'injection SQL ?

Mary-Kate Olsen
Libérer: 2024-12-24 17:09:11
original
512 Les gens l'ont consulté

How Can I Efficiently Insert Multiple Rows into MySQLi While Preventing SQL Injection?

Insertion efficace de plusieurs lignes dans MySQLi avec atténuation des injections SQL

L'insertion d'un grand nombre de lignes dans une base de données MySQL avec PHP et MySQLi nécessite une technique à la fois sécurisée et efficace. Éviter les injections SQL lors de la gestion d'un tel volume de données peut être difficile.

Solution

Pour résoudre ce problème, envisagez d'utiliser une transaction pour regrouper les opérations d'insertion. Cette approche consiste à déplacer les opérations de préparation et de liaison en dehors de la boucle, comme indiqué ci-dessous :

$array = array("array", "with", "about", "2000", "values");
$query = "INSERT INTO table (link) VALUES (?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("s", $one);

$mysqli->query("START TRANSACTION");
foreach ($array as $one) {
    $stmt->execute();
}
$stmt->close();
$mysqli->query("COMMIT");
Copier après la connexion

Avantages de la transaction

  • Vitesse accrue : L'exécution de requêtes SQL au sein d'une transaction réduit considérablement la surcharge et améliore les performances. Nos tests avec 10 000 itérations ont montré une vitesse multipliée par deux lors de l'utilisation d'une transaction.
  • Atténuation des injections SQL : Les transactions regroupent une série d'opérations en une seule unité atomique, garantissant que tout ou rien des lignes sont insérées. Cela empêche les insertions partielles et protège contre les tentatives d'injection SQL.

Implémentation

N'oubliez pas d'exécuter les requêtes START TRANSACTION et COMMIT en dehors de la boucle PHP pour garantir que l'intégralité l’opération est traitée comme une seule transaction. Cette approche combine la sécurité des instructions préparées avec l'efficacité des insertions groupées tout en atténuant les débordements de pile.

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