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 23535 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2025 - 23 juin 2017 à 20:41
yg_be Messages postés 23535 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2025 - 23 juin 2017 à 20:41
Bonjour à tous et à toutes,
Je voudrais savoir si c'est possible de faire une boucle for dans une requête SQL exemple: je veux créer 10 commandes dans ma table commandes en utilisant une boucle for pour pas perdre de temps en faisans ligne par ligne avec un insert into quelqu'un serait-il comment faire svp?
merci de vos réponse :)
Je voudrais savoir si c'est possible de faire une boucle for dans une requête SQL exemple: je veux créer 10 commandes dans ma table commandes en utilisant une boucle for pour pas perdre de temps en faisans ligne par ligne avec un insert into quelqu'un serait-il comment faire svp?
merci de vos réponse :)
A voir également:
- Mysql boucle for
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Mysql community server - Télécharger - Bases de données
- Idm for mac - Télécharger - Téléchargement & Transfert
- Instagram for pc - Télécharger - Divers Communication
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
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 :).