Je souhaite inscrire les lignes de mon fichier csv dans une base mysql. Voici le code que je suis arrivé à créer avec ce que j'ai trouvé sur Internet, mais impossible de le faire fonctionner. Où est mon erreur ?
Petite précision, la connexion à la base de données est déjà faite précédemment et fonctionne.
if (is_file("../Listing.csv")) {//Verification du fichier csv $csv = fopen("../Listing.csv","r"); $ligne = 1; while(($tableau = fgetcsv($csv,0,";")) !== FALSE){//Tant qu'on est pas à la fin du fichier, recuperer données d'une ligne $sql = "INSERT INTO cantiques (id,Numero,Recueil,Nom,Playlist1,Playlist2,Playlist3,Fichier,RecueilLong) VALUES ('$tableau[0]','$tableau[1]','$tableau[2]','$tableau[3]','$tableau[4]','$tableau[5]','$tableau[6]','$tableau[7]','$tableau[8]')"; $connexion->query($sql) or die(mysqli_error()); $ligne++; } if (!empty($connexion)){echo "MAJ effectuée avec succès";} else {echo "MAJ impossible";} fclose($csv); }
En même temps, tu nous balances ton code et juste un "ça marche pas" donc on fait ce qu'on peut avec ce que tu veux bien donner.
> Parse error: syntax error, unexpected '$tableau' (T_VARIABLE) in .. on line 37
> La requête devrait être préparée
Non seulement ça résoudrait ton problème de syntaxe et ça éviterait les problèmes avec les ' mais ce serait plus performant. Le "compromis" à tes interpolations qui ne fonctionnent pas avec les tableaux sans les entourer d'accolades c'est la concaténation avec échappement par mysqli_real_escape_string (ou sont équivalent OO)
Oui, le "ca ne marche pas", veut dire que ma base sql est aussi vide à la fin qu'au début.
Pour ce que tu appelles "une requête préparée", là, tu me parles chinois. Je suis noob complet en sql, je ne fais qu'assembler des morceaux de codes trouvés sur Internet, espérant arriver à faire ce que je cherche. Donc je suis preneurs d'explications à ce sujet.
EDIt : Bon, en fait, c'est bon, j'ai fini par trouvé mon erreur. Merci de m'avoir aidé.
- Edité par flocg1983 16 octobre 2021 à 17:18:27
PHP - Import csv et inscription dans base sql
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli