Erreur mysql_fetch_array

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. 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
    1. Contributeur
      '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
      1. 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
        1. 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
        2. Contributeur
          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
          !