Insérer plusieurs lignes dans une table en php et sql
Fermé
needhelp
-
Modifié le 22 juil. 2022 à 16:00
jordane45
Messages postés38346Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention16 décembre 2024
-
22 juil. 2022 à 16:58
Bonjour,
mon problème est le suivant: j'essaye d'insérer dans une table (après donnée modifiées) plusieurs lignes de données que j'ai récupérer d'une première table avec une requête select
La fonction s'exécute mais j'ai seulement la première ligne des données qui subit l'insertion dans la nouvelle table
Je veux ainsi que ça se répète pour toutes les lignes de données.
j'ai pensé utiliser un foreach et j'obtenais un msg d'erreur qui me renvoyais vers mon fichier dbcontroller plus précisément vers la fonction que j'appelle pour exécuter la requête. je ne sais plus quel était le message d'erreur mais ça avait un rapport avec le fait que mes valeurs sont des booléens et non sous forme d'un tableau (array)
Je code en php
voici ma fonction :
$dbcontroller = new DBController();
$result = "";
$stmt1 = mysqli_prepare($dbcontroller->getConn(), "SELECT reference, numero, idetat, id_emplacement FROM balancelles WHERE reference = ?");
mysqli_stmt_bind_param($stmt1, 'i', $id);
$data1 = $dbcontroller->executeSelectQueryMSQL($stmt1);
$stmt2 = mysqli_prepare($dbcontroller->getConn(), "SELECT idetat FROM etats WHERE idetat = 0");
$data2 = $dbcontroller->executeSelectQueryMSQL($stmt2);
$stmt3 = mysqli_prepare($dbcontroller->getConn(), "SELECT id FROM emplacement WHERE id = 0");
$data3 = $dbcontroller->executeSelectQueryMSQL($stmt3);
//foreach($data1 as $data1){ <-- la où j'ai testé le forEach
if ($data1 && $data2 && $data3){
setlocale(LC_TIME, "fr_FR.UTF-8");
$date = new DateTime();
$date = strftime("%Y-%m-%d %H:%M:%S", $date->getTimestamp());
$stmtAction = mysqli_prepare($dbcontroller->getConn(), "INSERT INTO actions (reference, numero, date_heure, idetat, id_emplacement) VALUES (?,?,?,?,?)");
mysqli_stmt_bind_param($stmtAction, 'sssss', $data1[0]['reference'], $data1[0]['numero'], $date, $data2[0]['idetat'], $data3[0]['id']);
$dataAction = $dbcontroller->executeSelectQueryMSQL($stmtAction);(pb à cette ligne)
... }
//}
jordane45
Messages postés38346Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention16 décembre 20244 717 22 juil. 2022 à 16:58
Bonjour
Pour commencer il faudrait une seule requête SELECT (avec des jointures) au lieu de faire trois requêtes distinctes qui n'ont pas de lien entre elles..
Une fois que ce sera fait tu pourras en effet faire une boucle afin de traiter chaque ligne de ta requête SELECT.
Au passage, ta classe dBcontroller ne sert à rien
. À croire que tu as essayé de modifier un code qui tournait avant avec l'ancienne extension mySQL...
Pourrais remplacer ce code par l'utilisation d'un fetchfall
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.