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

  • Votes
  • Date
  • Date décroissante
  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
      !
  2. 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. 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