For dans SQL
Fermé
pazdu63
Messages postés
8
Date d'inscription
jeudi 15 juin 2017
Statut
Membre
Dernière intervention
6 avril 2018
-
19 juin 2017 à 10:22
yg_be Messages postés 22623 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 mars 2024 - 23 juin 2017 à 20:41
yg_be Messages postés 22623 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 mars 2024 - 23 juin 2017 à 20:41
A voir également:
- Mysql boucle for
- Mon pc s'allume et s'éteint en boucle - Forum Matériel & Système
- Mysql download - Télécharger - Bases de données
- Redmi note 10 redemarre en boucle - Forum Xiaomi
- Download instagram for pc - Télécharger - Divers Communication
- Saveaspdf.exe for office 2007 - Télécharger - Bureautique
6 réponses
Yuh12
Messages postés
184
Date d'inscription
mercredi 7 mai 2014
Statut
Membre
Dernière intervention
28 septembre 2017
24
19 juin 2017 à 10:58
19 juin 2017 à 10:58
Bonjour,
Pour 10 lignes de SQL, il vaut mieux ne pas s'embêter et boucler sur la requête pour faire 10 INSERT INTO grâce à un foreach.
Mais pour 5000 lignes par exemple, le fait de faire un seul INSERT INTO avec 5000 VALUES au lieu de 5000 INSERT INTO, est un vrai gain de performance.
Le principe va être d'écrire la requête en PHP, en concaténant les valeurs de la requête SQL.
Et ainsi on obtient un
Voici ma méthode, mais je ne suis pas contre un peu de simplification si quelqu'un à une idée :).
Pour 10 lignes de SQL, il vaut mieux ne pas s'embêter et boucler sur la requête pour faire 10 INSERT INTO grâce à un foreach.
Mais pour 5000 lignes par exemple, le fait de faire un seul INSERT INTO avec 5000 VALUES au lieu de 5000 INSERT INTO, est un vrai gain de performance.
Le principe va être d'écrire la requête en PHP, en concaténant les valeurs de la requête SQL.
// On "déclare" le Insert Into sans préciser ses VALUES $sql_insert = "INSERT INTO `matable` (`id_table`,`col1`, `col2`) VALUES "; // Pour vérifier si on est sur le dernier élément du tableau $lastKey = array_pop(array_keys($a_elements)); // On boucle sur le tableau PHP qui renvoit les valeurs foreach($a_elements as $key=>$elements) { $sql_insert.="("; // Ajout de la parenthèse de debut foreach($elements as $key2=>$line) { if($key2===0){ $sql_insert.="NULL"; // ID en auto-increment déclaré à NULL pour prendre une valeur automatique } $sql_insert.=",'".$line."'"; // on remplit toutes les valeurs } $sql_insert.=")"; // Ajout de la parenthèse de fin // On ajoute une virgule si ce n'est pas le dernier element if ($key !== $lastKey) { $sql_insert.=","; } }
Et ainsi on obtient un
$sql_insert = "INSERT INTO `matable` (`id_table`,`col1`, `col2`) VALUES ('0','ligne1_col1','ligne1_col2'), ('1','ligne2_col1','ligne2_col2')";
Voici ma méthode, mais je ne suis pas contre un peu de simplification si quelqu'un à une idée :).