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 :

récupération de données


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Casey_Garraty
    Femme Profil pro
    En formation développeur web
    Inscrit en
    Janvier 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En formation développeur web

    Informations forums :
    Inscription : Janvier 2020
    Messages : 22
    Par défaut récupération de données
    Bonjour a tous,

    Je suis une formation et j'en suis au cours sur la récupération de données sauf que je viens de faire exactement ce qu'il y a dans mon cours et j'ai le message suivant :

    Fatal error: Uncaught Error: Call to undefined function fetch_array() in C:\xampp\htdocs\test mysql.php:5 Stack trace: #0 {main} thrown in C:\xampp\htdocs\test mysql.php on line 5

    Donc je suis un peu perdue ... Quand je regarde les tutos sur la récupération de données je ne vois rien qui ressemble a ce qu'il y a dans mon cours...


    Je vous met le code en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $mysqli = new mysqli('localhost', 'root', '', 'ville_projet');
     $result= $mysqli->query('SELECT ville_nom FROM villes');
     
     while ($row=$result->fetch_array())
    {
        echo $row['ville_nom'] . '<br>';
    }
    ?>

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Si tu obtiens le message Call to undefined function fetch_array(), cela signifie que $result est égal à false (et non à un objet mysqli_result qui lui possède bien une méthode fetch_array()) et que ta requête a échoué. Tu peux t'en convaincre en faisant un var_dump($result); à la ligne 4.

    Il y a deux possibilités à cet échec:
    • soit c'est la requête SQL qui pose problème
    • soit c'est les paramètres de connexion à la base de données


    Pour ce qui est de la requête SQL, je ne vois rien de spécial, c'est une requête basique, donc sauf si tu t'es trompée dans le nom des champs ou de la table...

    Par contre, la ligne de connexion à la base est assez pernicieuse car même si la connexion n'est pas bonne (avec des paramètres incorrectes ou manquants), PHP ne te le signalera pas et renverra quand même un objet mysqli.

    La parade consiste à activer les rapports d'erreur pour qu'il te le signale avec mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); préalablement à la tentative de connexion.
    Dans ce cas, si le problème vient de la connexion, il t'affichera un message plus éloquent.

    À ta place, je tenterais: $mysqli = new mysqli('127.0.0.1', 'root', '', 'ville_projet', '3306'); (sans oublier le mot de passe).

    PS: Le terme "récupération de données" ne me semble pas trop adapté à ce que tu es en train de faire (ça concerne plutôt comment retrouver des données après par exemple un crash). De saines lectures: https://phpdelusions.net/ (en anglais) et bien sûr https://www.php.net/manual/fr/book.mysqli.php

  3. #3
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Pour appuyer @cosmoKnaki , tu peux aussi faire un try catch , qui te retournera une erreur, si c'est la connexion qui est en erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    try {
     
        $mysqli = new mysqli('localhost', 'root', '', 'ville_projet');
        $result = $mysqli->query('SELECT ville_nom FROM villes');
     
        while ($row = $result->fetch_array()) {
            echo $row['ville_nom'] . '<br>';
        }
     
    }catch (Exception $e){
        echo $e->getMessage();
    }

  4. #4
    Membre averti Avatar de Casey_Garraty
    Femme Profil pro
    En formation développeur web
    Inscrit en
    Janvier 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En formation développeur web

    Informations forums :
    Inscription : Janvier 2020
    Messages : 22
    Par défaut
    Merci pour ta réponse rapide et bien détaillée, c'était la requête SQL qui posait problème ... Une petite erreur de ma part

    merci encore

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/04/2004, 10h09
  2. Réponses: 2
    Dernier message: 20/02/2004, 08h47
  3. [ DB2] => [ORACLE] Récupération de données
    Par LeDid dans le forum DB2
    Réponses: 3
    Dernier message: 25/06/2003, 17h10
  4. Réponses: 13
    Dernier message: 20/03/2003, 08h11
  5. [XMLRAD] récupération de donnée
    Par Mitch79 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 30/01/2003, 15h36

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