Partage
  • Partager sur Facebook
  • Partager sur Twitter

PHP - Import csv et inscription dans base sql

Demande d'aide

Sujet résolu
    16 octobre 2021 à 16:20:12

    Bonjour,

    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);
    }

    Merci d'avance !

    -
    Edité par flocg1983 16 octobre 2021 à 16:24:20

    • Partager sur Facebook
    • Partager sur Twitter
      16 octobre 2021 à 16:43:27

      Si "ça ne fonctionne pas", tu devrais avoir des erreurs, non ? Si encore elles sont affichées (display_errors à on).

      Le if est faux parce que le chemin du fichier est faux ? (il n'a visiblement pas de else pour le remarquer le cas échéant)

      La requête devrait être préparée (et dans une transaction), là, la moindre ' dans les données et ça plante lamentablement.

      -
      Edité par julp 16 octobre 2021 à 16:45:35

      • Partager sur Facebook
      • Partager sur Twitter
        16 octobre 2021 à 16:56:09

        Merci de la réponse.

        J'ai l'erreur suivante:


        Parse error: syntax error, unexpected '$tableau' (T_VARIABLE) in .. on line 37

        La ligne 37 est celle du values...

        Pour le if, oui, en effet, j'ai fait ça vite et il n'est pas correct. mais ce n'est pas le problème actuel.

        -
        Edité par flocg1983 16 octobre 2021 à 16:56:26

        • Partager sur Facebook
        • Partager sur Twitter
          16 octobre 2021 à 17:05:44

          > ce n'est pas le problème actuel

          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)

          -
          Edité par julp 16 octobre 2021 à 17:08:38

          • Partager sur Facebook
          • Partager sur Twitter
            16 octobre 2021 à 17:10:54

            Merci,

            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

            • Partager sur Facebook
            • Partager sur Twitter

            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.
            • Editeur
            • Markdown