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 :

Erreur avec mysqli_fetch_array


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Erreur avec mysqli_fetch_array
    Bonjour

    Dans mon code j'utilise la commande : mysqli_fetch_array

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($donnees=mysqli_fetch_array($connect, $data1)) {
    echo '#'.$donnees['id']. ' par ' .htmlspecialchars(stripcslashes($donnees['pseudo'])) .'<br /><br />';
    echo htmlspecialchars(stripcslashes($donnees['message'])) .'<br /><br />';
    };
    et lorsque je l’exécute j'ai le message d'erreur suivant :

    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, object given in F:\developpement\wamp\www\index.php on line 4
    Call Stack
    # Time Memory Function Location
    1 0.0022 244784 {main}( ) ..\index.php:0
    2 0.0036 253792 mysqli_fetch_array ( ) ..\index.php:4
    Pouvez-vous m'aider ?

    Merci par avance.

    Cordialement

  2. #2
    Membre éprouvé Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Points : 1 105
    Points
    1 105
    Par défaut
    Bonjour,

    Tout est dit dans le message d'erreur, le premier paramètre passé à la fonction devrait être une ressource et non pas un objet, c'est à dire le résultat du mysqli_connect.

    Peut-on avoir le debut du code pour pouvoir aider ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Bonjour Merci pour votre réponse :

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $connect = mysqli_connect('localhost', 'root','', 'essai');
    $data1 = mysqli_query($connect, 'SELECT * FROM chat ORDER BY id DESC LIMIT 0.10');
    while($donnees = mysqli_fetch_array($connect, $data1)) {
    echo '#'.$donnees['id']. ' par ' .htmlspecialchars(stripcslashes($donnees['pseudo'])) .'<br /><br />';
    echo htmlspecialchars(stripcslashes($donnees['message'])) .'<br /><br />';
    };
    ?>

  4. #4
    Membre régulier Avatar de MTroy_
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Points : 83
    Points
    83
    Par défaut
    Bonjour,

    Comme le dit Théocrite, la réponse est dans le message d'erreur,
    qui dit que le premier argument devrait une ressource et non pas un objet.
    Si l'on prend le temps de lire la doc mysqli_fetch_array()

    $connect représente le lien vers la db sous forme d'objet.
    il faut donc donner en paramètre la ressource issue du jeu de résultat retournés par mysqli_query : $data1.
    (ne pas confondre le prototype de mysqli_query, qui lui nécessite l'id $connect)
    Plus rapide que webkit!
    Chuck Norris n'utilise pas de navigateur. Il lit le code source et imagine la page. Question de gain de temps...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $connect = mysqli_connect('localhost', 'root','', 'essai');
    $data1 = mysqli_query($connect, 'SELECT * FROM chat ORDER BY id DESC LIMIT 0.10');
    while($donnees=mysqli_fetch_array($data1)) {
    echo '#'.$donnees['id']. ' par ' .htmlspecialchars(stripcslashes($donnees['pseudo'])) .'<br /><br />';
    echo htmlspecialchars(stripcslashes($donnees['message'])) .'<br /><br />';
    };
    ?>
    J'ai le message d'erreur suivant :

    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in F:\developpement\wamp\www\index.php on line 4
    Call Stack
    # Time Memory Function Location
    1 0.0017 244736 {main}( ) ..\index.php:0
    2 0.0079 253744 mysqli_fetch_array ( ) ..\index.php:4
    Cordialement

  6. #6
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    nous avons bien vu ton message d'erreur, inutile de le reposter plusieurs fois.

    Je t'invite à regarder la doc : https://php.net/manual/fr/function.mysql-query.php
    https://php.net/manual/fr/function.m...etch-array.php

    tu remaqueras que les paramètres que tu as passés aux méthodes sont faux, en particulier pour fetch_array le $connect est inutile

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Si tu aurai lu tu aurai vue que j'ai modifier le code, et que j'ai un autre message d'erreur.

  8. #8
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    relis calmement la doc et tu comprendras d'ou vient ton erreur même si je te l'ai précisé dans mon dernier message

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    J'ai fais mon code comme la doc soit : while($donnees=mysqli_fetch_array($data1)).

    Et j'ai le message d'erreur suivant :
    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in F:\developpement\wamp\www\index.php on line 4
    Merci

  10. #10
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    l'erreur provient à la base de mysql_query qui renvoit faux en cas d'échec de la requête, d'ou ton erreur ensuite car tu passes ensuite le booléen false retourné par mysql_query à mysql_fetch_array.
    tu as ecris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data1 = mysqli_query($connect, 'SELECT * FROM chat ORDER BY id DESC LIMIT 0.10');
    dans la doc de mysql_query il y a bien marqué : en premier paramètre la requête, et eventuellement en second paramètre ta ressource $connect. Tu peux ne mettre que ta requête SELECT en paramètre de la méthode et ça marchera

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    merci à toi, mais quand j'utilise le mysql_query il me dit d'utiliser mysqli et mysqli à besoin en premier paramètre de ce connecter à la base SQL d'où le $connect ?

  12. #12
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    ah effectivement autant pour moi, essaie ta requête directement en BDD pour voir s'il y a une erreur dans la requête et vérifie que tu arrives bien à te connecter avec mysqli_connect, je crois que tu peux checker avec cette méthode : mysqli_connect_errno

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Le message d'erreur indique que le résultat de mysqli_query() est un booléen et non une ressource. Renseigne toi dans la doc pour déterminer quels sont les cas où cette fonction renvoie un booléen (qui ici est manifestement false) pour une requête type SELECT.
    Quand tu auras trouvé, regarde en quoi la syntaxe de ton SELECT est incorrecte. Et si tu n'arrives pas à voir que ta clause LIMIT est foireuse, affiche l'erreur SQL avec mysqli_error().
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 07h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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