OVH Cloud OVH Cloud

[Debutant] Utilisation de mysql_fet ch_row

7 réponses
Avatar
Bzzz
Bonjour à tous,

Je débute en PHP et peut être ceux qui ont même un tout
petit peu plus de pratique que moi pourront répondre à mon
problème que je pressens être assez banal, à savoir que je
me prend un "mysql_fetch_row(): supplied argument is not a
valid MySQL result resource" dans les dents à chaque fois
que j'essaie d'utiliser ladite fonction.

Après moult recherches sur le sujet, je précise que j'ai
fait toute les vérif recommandées dans le cas d'un tel
message : le mysql_connect et le mysql_select_db sont
présents et fonctionnent (j'ai mis des or die au cazou), ma
requête fonctionne (je l'ai testée manuellement sur
phpMyAdmin) et me donne bien le résultat escompté.

Après la connection à la bdd, j'ai donc :

$resultat=mysql_query(ma requête qui marche);

while ($row=mysql_fetch_row($resultat)) <--- ligne sur
laquelle je prends le message d'erreur !
{
echo $row[0];
echo $[row[1];
...
}

Keski cloche dans mon code ? :-(
Toute aide sera la bienvenue. Merci d'avance
Bzzz

7 réponses

Avatar
Olivier Miakinen

Je débute en PHP et peut être ceux qui ont même un tout
petit peu plus de pratique que moi pourront répondre à mon
problème que je pressens être assez banal, à savoir que je
me prend un "mysql_fetch_row(): supplied argument is not a
valid MySQL result resource" dans les dents à chaque fois
que j'essaie d'utiliser ladite fonction.


Traditionnellement, la réponse à ce genre de problème est :
« RTFM http://faqfclphp.free.fr/#rub3.1 ».

Après moult recherches sur le sujet, je précise que j'ai
fait toute les vérif recommandées dans le cas d'un tel
message : le mysql_connect et le mysql_select_db sont
présents et fonctionnent (j'ai mis des or die au cazou),


Ok.

ma requête fonctionne (je l'ai testée manuellement sur
phpMyAdmin) et me donne bien le résultat escompté.


Ok dans phpMyAdmin, mais as-tu aussi testé le résultat dans ton programme ?

Après la connection à la bdd, j'ai donc :

$resultat=mysql_query(ma requête qui marche);

while ($row=mysql_fetch_row($resultat)) <--- ligne sur
laquelle je prends le message d'erreur !


Que vaut $resultat entre le retour de mysql_query() et la boucle ?

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.

Avatar
syn_85
Hello,

Ca serait pratique de nous faire connaître la requête SQL que tu
utilises (ou tout le script). Sinon, regarde bien que mysql_select_db()
sélectionne la bonne base de données.

Et puis vérifie que tu consultes la bonne table, et que celle-ci n'est
pas vide...

Tu peux également faire un "or die(mysql_error())" sur ta requête
SQL, pour voir si elle fonctionne vraiment (sous PHP).

Autre idée, vérifie que les variables utilisées dans ta requête (si
il y en a) sont traitées correctement avant d'être utilisées.

Bye
Avatar
Ludovic LE MOAL
Bzzz nous a schtroumpfé :

Bonjour à tous,


Bonjour,

$resultat=mysql_query(ma requête qui marche);

while ($row=mysql_fetch_row($resultat)) <--- ligne sur
laquelle je prends le message d'erreur !
{
echo $row[0];
echo $[row[1];
...
}

Keski cloche dans mon code ? :-(


C'est difficile à dire sans la requête qui est censée marcher. J'aurais
fait ça, personnellement :

$resultat=mysql_query(ma requête qui marche);

if($resultat)
{
while ($row=mysql_fetch_row($resultat))
//__________^ J'aurais utilisé mysql_fetch_assoc mais bon...
{
echo $row[0];
echo $[row[1];
//____^ Qu'est-ce que ça vient foutre là ça ?
}
}
else echo mysql_error();
--
Ludovic LE MOAL

Avatar
Bzzz
Bonjour à tous,

Je débute en PHP et peut être ceux qui ont même un tout petit peu plus
de pratique que moi pourront répondre à mon problème que je pressens
être assez banal, à savoir que je me prend un "mysql_fetch_row():
supplied argument is not a valid MySQL result resource" dans les dents à
chaque fois que j'essaie d'utiliser ladite fonction.

Après moult recherches sur le sujet, je précise que j'ai fait toute les
vérif recommandées dans le cas d'un tel message : le mysql_connect et le
mysql_select_db sont présents et fonctionnent (j'ai mis des or die au
cazou), ma requête fonctionne (je l'ai testée manuellement sur
phpMyAdmin) et me donne bien le résultat escompté.

Après la connection à la bdd, j'ai donc :

$resultat=mysql_query(ma requête qui marche);

while ($row=mysql_fetch_row($resultat)) <--- ligne sur laquelle je
prends le message d'erreur !
{
echo $row[0];
echo $[row[1];
...
}

Keski cloche dans mon code ? :-(
Toute aide sera la bienvenue. Merci d'avance
Bzzz


Bon bé..... je viens de trouver.
Dans la connection et la sélection de ma base de données, je
passais les paramètres entre doubles côtes au lieu de
simples côtes...... Une journée pour trouver une erreur
aussi bête. Faut le faire !
Merci quand même pour votre aide.

Avatar
Guillaume Bouchard
Bzzz wrote:
Dans la connection et la sélection de ma base de données, je passais les
paramètres entre doubles côtes au lieu de simples côtes......


Dis moi, je croyais que ta connexion à la base de donnée fonctionait
parfaitement...

À l'avenir :

mysql_connect(...) or die(mysql_error());
mysql_select_db(...) or die(mysql_error());

mysql_query(..) or die(mysql_error());

Maitenant le coup des doubles/simples quotes je n'y crois que peu, mais bon.

--
Guillaume.

Avatar
Bzzz
Bzzz wrote:

Dans la connection et la sélection de ma base de données, je passais
les paramètres entre doubles côtes au lieu de simples côtes......



Dis moi, je croyais que ta connexion à la base de donnée fonctionait
parfaitement...

À l'avenir :

mysql_connect(...) or die(mysql_error());
mysql_select_db(...) or die(mysql_error());

mysql_query(..) or die(mysql_error());

Maitenant le coup des doubles/simples quotes je n'y crois que peu, mais
bon.

J'ai rajouté le or die....... c'est plus sûr et surtout

c'est plus explicite pour aider à trouver l'erreur. Pour les
doubles cotes, il a suffit que je les remplace par des
simples et ça a marché.
Et puis je rappelle que.... je débute !


Avatar
John GALLET
Dans la connection et la sélection de ma base de données, je passais
les paramètres entre doubles côtes au lieu de simples côtes......




Je *crois* que je commence à comprendre. Moi aussi ça me paraissait
complètement délirant cette histoire de script qui tombe en marche en
changeant des ' par des ". Je présume que c'est un truc du genre :
....mysql...('$parametre_1','$parametre_2');
Et en effet, ça risque pas de marcher. Ou plus précisement, pas de la
manière dont on l'attend.

J'ai rajouté le or die....... c'est plus sûr
Ca dépend...


et surtout c'est plus explicite pour aider à trouver l'erreur.
Egalement pour toute personne tentant de pirater ton site...

Attention à séparer les messages destinés au(x) développeur(s) de ceux
destinés aux utilisateurs.

Et puis je rappelle que.... je débute !
Leçon importante à retenir : tes interlocuteurs ne sont pas devins. Si tu

ne données pas plus de précisions sur qu'est-ce qui marche et qu'est-ce
qui ne marche pas, on ne peut pas faire grand chose pour toi. Sois
*précis*.

a++;
JG