Erreur mysql_fetch_array

Fermé
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 - 13 févr. 2015 à 18:29
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 13 févr. 2015 à 19:23
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

Utilisateur anonyme
13 févr. 2015 à 18:33
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
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 13/02/2015 à 19:21
'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
djimson Messages postés 211 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 13 février 2015 3
13 févr. 2015 à 19:16
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
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
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
13 févr. 2015 à 19:23
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