Bonjour,
désolé pour la non-concision du titre mais pas trouvé plus court.
Comme le dit le titre, je lis un fichier csv, mais je ne mets pas toutes les colonnes en bdd (MySql). L'insertion marche bien mais l'update est plus difficile (si le fichier est déjà présent en bdd, je fais un update). J'étais parti sur un code qui fonctionnerait bien si on écrivait chaque colonne du fichier csv en bdd, mais ce n'est pas le cas, et je ne trouve pas comment l'adapter :
Ce code fonctionne si chaque colonne du fichier csv correspond à une colonne de la bdd, mais certaines colonnes du csv sont inutiles donc on ne les stocke pas. Autrement dit, les indices $key du foreach ne correspondent pas aux indices du tableau $list_colons. De ce fait, je ne vois pas comment construire la requête SQL. Pouvez-vous m'aider ?
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 foreach($val as $val_bdd) // chaque $val_bdd est un tableau qui contient un enregistrement du fichier csv (chaque élément du tableau contient une des valeurs de cet enregistrement) { $begin_req="UPDATE `".$type_CSV."` SET"; //le tableau $list_colons contient le nom de chaque colonne dans la bdd $list_colons= ['id','Product_Name','Assigned_Group','Submitted_Date','Last_Resolved_Date','Summary','Priority_Key','Status_Key','Region','Country','Submitter_SESA','Customer_SESA','Organization','Incident_Type','Reported_Source']; foreach ($val_bdd as $key => $item) { $update_colons.=$list_colons[$key]; if (gettype($item)=="integer") $update_colons.="=".$item.","; else $update_colons.="='".$item."',"; }; $sql=$begin_req.$update_colons; // pour simplifier mon code, j'ai fait abstraction de la clause WHERE $ret=$bdd->insert( $sql, [] ); // on exécute la requête
Partager