IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Chargement de table avec mysqli [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Retraité, ancien responsable gros systèmes IBM et HPUX
    Inscrit en
    Février 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité, ancien responsable gros systèmes IBM et HPUX

    Informations forums :
    Inscription : Février 2019
    Messages : 3
    Par défaut Chargement de table avec mysqli
    Bonjour.

    Mon hébergeur ayant décidé de passer à PHP7 et Mysqli, j'ai un problème pour charger une base de données.

    Le php est exécuté chez mon hébergeur, lequel a refusé de m'aider ...


    Les drop table et create table se font bien.
    La commande load data local infile 'membres.csv' me renvoie un code 2000 alors que le fichier est bien présent dans le même répertoire que le php.
    Si je ne me trompe pas 2000 signifie fichier non trouvé ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql="CREATE TABLE membres (prenom varchar(25), nom varchar(25), mois char(2), jour char(2))";
    $res= mysqli_query($dblk , $sql) ; 
     
    if (!$res) {echo 'create :'; echo (" $dblk->errno " ); <br> ' ; }
    echo "<br>";
    Cela fonctionnait bien avec la version précédente.

    Quelqu'un a-t-il une suggestion à me faire ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    la requête "load data" est faite par le serveur de base de données donc il ne connait peut-être pas le fichier PHP qui l'a appelé et parfois le serveur MYSQL n'est pas sur la même machine que le serveur HTTP.
    donc essayez d'indiquer le chemin complet du fichier.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Retraité, ancien responsable gros systèmes IBM et HPUX
    Inscrit en
    Février 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité, ancien responsable gros systèmes IBM et HPUX

    Informations forums :
    Inscription : Février 2019
    Messages : 3
    Par défaut
    Merci de votre réponse.

    Toutefois je ne comprends pas bien quel est le chemin complet :

    http://monsite.org/anniv/membres.php ??

    Si je mets ça le fichier n'est pas plus trouvé. dans le load data que dans file-exists .

    Code : 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
    17
    18
    19
    20
    $filename = 'membres.csv'; $filename = 'http://monsite.org/anniv/membres.csv' ;
     
    if (file_exists($filename)) {
        echo " Le fichier $filename existe.";
    } else {
        echo " Le fichier $filename n'existe pas.";
    }
     
    $sql="load data local infile '$filename' into table membres fields terminated by ';' (prenom, nom, mois, jour)";
     
    echo "<br>";
    echo "<br>";
    echo $sql; echo " ; " ;
    echo "<br>";
    echo "<br>";
     
    $res= $dblk->query($sql) ;
    $err = " $dblk->errno " ;
    if (!$res) {echo " -> load data erreur :"; echo ($err ); echo '<br>';}
    if ($err = 2000){echo "2000 = fichier inconnu" ;}

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Retraité, ancien responsable gros systèmes IBM et HPUX
    Inscrit en
    Février 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité, ancien responsable gros systèmes IBM et HPUX

    Informations forums :
    Inscription : Février 2019
    Messages : 3
    Par défaut Solution
    En recherchant dans d'autres forum j'ai lu que certains hébergeurs évoquaient des raisons de sécurité pour supprimer la fonction load data.
    J'ai trouvé une suggestion pour by-passer ceci.
    Mettre avant la commande load data :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Define ('MYSQLI_OPT_LOCAL_INFILE', true);
     
    $dblk -> options(MYSQLI_OPT_LOCAL_INFILE, true) ; 
    echo ("Options : ");echo( " $dblk->errno ");
    J'ai pu ainsi mettre ma base à jour.
    J'espère que cela pourra être utile à d'autres.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] liste des tables avec mysqli
    Par michel71 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/09/2015, 14h54
  2. Chargement de tables avec ordre de tri
    Par arnest dans le forum QlikView
    Réponses: 2
    Dernier message: 12/09/2014, 15h46
  3. Chargement d'un XML en tables avec PL/SQL
    Par jenlin dans le forum PL/SQL
    Réponses: 7
    Dernier message: 21/03/2011, 12h55
  4. [SSIS] [2K5] Chargement de table avec update
    Par hayassinet dans le forum SSIS
    Réponses: 4
    Dernier message: 12/06/2009, 15h30
  5. Chargement d'une table avec de très nombreux champs
    Par Davou dans le forum Débuter
    Réponses: 4
    Dernier message: 04/07/2007, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo