L'insertion de gros volumes de données dans une base de données MySQL de manière sécurisée et performante est cruciale pour de nombreuses applications. Cette question explore les techniques permettant d'insérer efficacement 2 000 lignes tout en garantissant la protection contre les injections SQL.
L'extrait de code fourni parcourt un tableau de valeurs, préparant et exécutant une requête distincte pour chaque insertion. Bien qu'elle soit sécurisée contre les injections SQL, cette approche peut s'avérer inefficace et entraîner des débordements de pile.
Solution améliorée avec les transactions :
Une solution plus optimale implique l'utilisation de transactions MySQL. En regroupant les insertions au sein d'une seule transaction, la base de données peut optimiser le processus et réduire considérablement le temps d'exécution.
$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");
Comparaison des performances :
Cette technique fournit un amélioration substantielle de la vitesse, comme le démontrent les tests de référence :
Cela représente une augmentation impressionnante de la vitesse de deux ordres de grandeur pour le scénario de test.
En tirant parti des transactions, vous pouvez insérer efficacement données en masse tout en maintenant la sécurité des injections SQL et en évitant 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!