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 mysql_fetch_array() [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut ' erreur mysql_fetch_array()
    Bonjours j'ai un soucis , quand j'exécute cette requête, j'obtiens l'erreur suivante:

    Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in

    donc voila le code en question:

    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
    21
    22
    23
    24
    25
    26
    27
    <?php 
     
     
    $A=$_POST["annee"];
     
     
    require("id_connexion.php");
     
     
     
     
    $query="select civilite, nom  FROM `stid`.`ancien2` WHERE `ancien2`.`naissance` = '$A';";
     
    $result= mysql_query($query) or die ('Erreur '.mysql_error());
     
    while($data=mysql_fetch_array($query))
    {
    echo 'Voici les etudiants ayant obtenue leur diplome cette année la';
     
    echo $data['civilite'];
    echo " ";
    echo $data['nom'];
     
     
    }
     
    ?>
    j'aimerais bien connaître mon erreur

    merci d'avance

  2. #2
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    enlève le point virgule dans la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query="select civilite, nom FROM `stid`.`ancien2` WHERE `ancien2`.`naissance` = '$A' ";
    et c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($data=mysql_fetch_array($result))
    c'est dans le message d'erreur, la fonction veut un paramètre de type ressource pas une chaine de caractère (la requete)...
    Développeur informatique contrarié...

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    en dev il faut toujours activer le mysql.trace_mode (et surtout pas les or die, toujours faire des if sur les ressources ou is_ressource)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('mysql.trace_mode', true);

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    ... et surtout pas les or die
    Oui enfin tu y vas un peu fort, sans dire que le "or die" soit le mieux que l'on puisse faire, ce n'est pas non plus le pire que l'on puisse faire, et toujours mieux (en phase de développement) que de ne rien faire...

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    un die() ne peut servir que pour un debug ponctuel.
    Tu ne vas pas rechercher et enlever tous tes die() quand tu passes en production.

    Etant donné qu'il existe pour mysql une méthode permettant d'avoir ou d'enlever les erreurs a volonté, il n'y a pas lieu de faire autre chose.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    de plus ca arrête direct le code, et souvent on met le mysql_error dedans et/ou la requete en question, ce qui en production donne des indications sur la base, pour c'est vraiment quelque chose qu'il faut éradiquer, et pareil pour mysqli pas de or die non plus c'est mysqli_report

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    On est bien d'accord, avec quelques explications ça va tout de suite mieux

    Non parce que tel que tu le disais au départ, avec tous les exemples et tutos qui utilisent le "or die", un débutant en te lisant pourrait se dire que ces exemples sont buggués ou non fonctionnels et ne pas s'intéresser au reste (donc à l'essentiel) à cause de cela...

    Avec ton explication suivante - "or die" donne des infos qui pourraient être utilisées par un utilisateur malveillant - précédée de celle de sabotage - plutôt que de penser à les enlever un à un avant la phase d'exploitation, autant utiliser une autre méthode - on a une réponse plus argumentée et plus intéressante pour un néophyte qu'un simple "surtout pas"

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

Discussions similaires

  1. [MySQL] Erreur mysql_fetch_array php
    Par mjs21 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 04/06/2008, 12h05
  2. [MySQL] erreur mysql_fetch_array
    Par eleve36 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/04/2008, 08h18
  3. Facile de déclencher une erreur mysql_fetch_array
    Par JackBeauregard dans le forum SQL Procédural
    Réponses: 14
    Dernier message: 12/07/2006, 21h13
  4. [SGBD] erreur mysql_fetch_array
    Par Le Mage Noir dans le forum Requêtes
    Réponses: 18
    Dernier message: 09/02/2006, 12h07
  5. erreur mysql_fetch_array()
    Par speedylol dans le forum Requêtes
    Réponses: 3
    Dernier message: 05/01/2006, 12h00

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