Erreur mysql_fetch_array

djimson Messages postés 217 Statut Membre -  
ElementW Messages postés 5690 Statut Contributeur -
Bonsoir,
Je suis conffronté à un problème depuis quelques jours que j'arrive pas à resoudre (Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\....ligne77).
e regarde ma ligne 77 qui donne ceci :
$row = mysqli_fetch_array($resultat);

Mais j'arrive pas à comprendre.
Voici une partie du code :

<?php

$id=$_GET['id'];


//connection au serveur local:
$cnx = mysql_connect("localhost", "root", "");
//sélection de la base de données:
$db  = mysql_select_db("ma_base");

$requete="SELECT *  FROM `ma_table` where id=$id";
$resultat=mysql_query($requete); 
$row = mysqli_fetch_array($resultat);
mysql_close();
?>
<?php echo $row['id'] ?>

J'ai l'erreur Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in ....

Merci bien pour l'explication

--

3 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    d'abord tu peux ôter les apostrophes encadrant le nom de ta table, ensuite si ta requête ne retourne aucun résultat alors $resultat sera FALSE ... et donc error !

    cdt
    0
  2. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    'lut, tu mélanges les fonctions de MySQL et MySQLi!
    Les fonctions
    mysql_*
    sont obsolètes et à ne plus utiliser. Utilise mysqli justement, mais ne mélange pas!
    Avec mysqli, tu as les requêtes préparées qui empêcheront que si j'accède à ta page via
    page.php?id='); DROP TABLE `ma_table`;
    (à l'encodage URL près), ta table soit détruite.
    from human import idiocy
    del idiocy
    0
  3. djimson Messages postés 217 Statut Membre 3
     
    Ludobabs, j'ai supprimé l'apostrophe.
    Ma requete renvoie un resultat.
    J'ai même fixé l'idée mais même erreur :
    $requete="SELECT * FROM ma_table where cnib=\"num001\"";
    $resultat=mysql_query($requete); 
    $row = mysqli_fetch_array($resultat);
    mysql_close();

    gravgun, merci mais je ne vous suis pas très bien. Si vous pouvez être plus explicite.

    Merci
    0
    1. Utilisateur anonyme
       
      re,

      au lieu d'échapper tes deux guillemets, place deux apostrophes à la place

      $requete="SELECT * FROM ma_table where cnib=\"num001\"";

      devient

      $requete="SELECT * FROM ma_table where cnib = 'num001' ";

      cdt
      0
    2. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      Observe la différence:
      mysqli_fetch_array
      mysql_fetch_array
      Le "i" est dans l'un et pas dans l'autre; les 2 fonctions on la même utilité mais n'appartiennent pas au même module de PHP: la première appartient a MySQLi, et la seconde a MySQL tout court, qui est obsolète. Les 2 ne sont pas compatibles entre eux; or tu utilises un
      mysql_query
      suivi d'un
      mysqli_fetch_array
      !
      0