Problème de requete PHP
Fermé
lili
-
2 nov. 2009 à 11:25
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 3 nov. 2009 à 00:16
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 3 nov. 2009 à 00:16
A voir également:
- Problème de requete PHP
- Easy php - Télécharger - Divers Web & Internet
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ? - Forum Access
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de pomme mais pas de pomme de terre ? - Forum Windev
- Problème de requête parametrée - Forum Windev
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
11 réponses
C'est or die (mysql_error()); qu'il faut rajouter si on veut un vrai diagnostique de l'erreur.
Mais la première requête de lili s'exécute bien puisqu'il obtient bien une ressource.
Quand à la seconde, on ne sait même pas si elle est exécutée, il est tellement avare en renseignements qu'il ne nous donne pas la ligne de code où $sql2 est appelé. Il n'y a pas d'erreur de syntaxe dans ce qu'il nous montre, et c'est pour ça que j'essaye de tirer des renseignements sur ce qu'il y a vraiment dans son script.
Mais la première requête de lili s'exécute bien puisqu'il obtient bien une ressource.
Quand à la seconde, on ne sait même pas si elle est exécutée, il est tellement avare en renseignements qu'il ne nous donne pas la ligne de code où $sql2 est appelé. Il n'y a pas d'erreur de syntaxe dans ce qu'il nous montre, et c'est pour ça que j'essaye de tirer des renseignements sur ce qu'il y a vraiment dans son script.
Salut, tu devrais mieu regarder comment on attaque une bdd avec php...
http://www.manuelphp.com/cours/cours.php?id=37
http://www.manuelphp.com/cours/cours.php?id=37
Bonjour
Tu ne nous dis pas tout. Avec ce que tu donnes, $machine_conso est une chaîne de caractères représentant une requête, et pas une ressource.
Je suppose donc qu'en fait tu as
$machine_conso = mysql_query("Select nom_machine
from machine_conso
where num_machine=".$num);
là, $machine_conso est bien une ressource
Et pour extraire le contenu de cette ressource, il faut utiliser (par exemple) mysql_fetch_array :
$ligne=mysql_fetch_array($machine_conso);
et le champ que tu as demandé est dans $ligne['nom_machine']
d'où (si c'est bien nom_machine ton type de machine)
$sql2 = "SELECT *
FROM voir_conso
where type_machine_conso = '$ligne[nom_machine]'";
Tu ne nous dis pas tout. Avec ce que tu donnes, $machine_conso est une chaîne de caractères représentant une requête, et pas une ressource.
Je suppose donc qu'en fait tu as
$machine_conso = mysql_query("Select nom_machine
from machine_conso
where num_machine=".$num);
là, $machine_conso est bien une ressource
Et pour extraire le contenu de cette ressource, il faut utiliser (par exemple) mysql_fetch_array :
$ligne=mysql_fetch_array($machine_conso);
et le champ que tu as demandé est dans $ligne['nom_machine']
d'où (si c'est bien nom_machine ton type de machine)
$sql2 = "SELECT *
FROM voir_conso
where type_machine_conso = '$ligne[nom_machine]'";
Merci pour ton information. J'ai essayé mais cela ne résoud pas le problème.
En effet, j'ai bien une ressource qui est la suivante :
$requete = mysql_query($machine_conso) ;
J'ai bien fais ce que tu m'as dit :
$ligne=mysql_fetch_array($requete);
$sql2 = "SELECT *
FROM voir_conso
where type_machine_conso = '$ligne[nom_machine]'";
Mais rien y fait. J'ai fais un test sur la requete, et c'est bien la requete qui a un problème.
En effet, j'ai bien une ressource qui est la suivante :
$requete = mysql_query($machine_conso) ;
J'ai bien fais ce que tu m'as dit :
$ligne=mysql_fetch_array($requete);
$sql2 = "SELECT *
FROM voir_conso
where type_machine_conso = '$ligne[nom_machine]'";
Mais rien y fait. J'ai fais un test sur la requete, et c'est bien la requete qui a un problème.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Si type_machine_conso est du type varchar, ou text, ou blob, ou .... dans ta bdd, dans ton select faut que tu rajoute des <">...
Quels test fais tu ? Sur quelle requete ? Et quel problème en ressort-il ?
Car si tu fais un echo $requete, normal que ça t'affiche que c'est une ressource, puisque c'en est une.
Car si tu fais un echo $requete, normal que ça t'affiche que c'est une ressource, puisque c'en est une.
Je ne comprends pas ou il faut mettre les <> ? Oui c'est bien en varchar ..
Ah Okay..
Bah j'affiche $requete pour voir ce qu'il m'affiche, et ça m'affiche Resource id #4.
Mais maintenant j'ai compris pourquoi. Il faut que je fasse un mysql_fetch_array ou object. Malheureusement cela ne marche toujours pas.
Je fais également un test sur $requete, voir si il me l'execute bien.
if ($requete) {...}else{...}
Mais ce n'est pas le cas.
Je suis dessus depuis ce matin. Est-ce une erreur de syntaxe ?
Bah j'affiche $requete pour voir ce qu'il m'affiche, et ça m'affiche Resource id #4.
Mais maintenant j'ai compris pourquoi. Il faut que je fasse un mysql_fetch_array ou object. Malheureusement cela ne marche toujours pas.
Je fais également un test sur $requete, voir si il me l'execute bien.
if ($requete) {...}else{...}
Mais ce n'est pas le cas.
Je suis dessus depuis ce matin. Est-ce une erreur de syntaxe ?
Je fais également un test sur $requete, voir si il me l'execute bien.
if ($requete) {...}else{...}
Mais ce n'est pas le cas.
Il n'exécute ni le premier {...} ni le second ? ça m'étonnerait bien ! Si tu récupères bien une ressource, il doit exécuter le premier.
Est-tu sûr de comprendre ce que signifie ce test ? Et pourquoi ne montres-tu pas ce qu'il y a dans tes {...} ? Moins tu donnes d'informations (sauf les identifiants et les mots de passe bien sûr), plus il faudra de temps pour comprendre.
if ($requete) {...}else{...}
Mais ce n'est pas le cas.
Il n'exécute ni le premier {...} ni le second ? ça m'étonnerait bien ! Si tu récupères bien une ressource, il doit exécuter le premier.
Est-tu sûr de comprendre ce que signifie ce test ? Et pourquoi ne montres-tu pas ce qu'il y a dans tes {...} ? Moins tu donnes d'informations (sauf les identifiants et les mots de passe bien sûr), plus il faudra de temps pour comprendre.
tarek_dotzero
Messages postés
817
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
12 avril 2022
122
2 nov. 2009 à 14:05
2 nov. 2009 à 14:05
Je ne maitrise pas vraiment le PHP, mais bon:
1. Pour vérifier la bonne exécution, les gens du PHP ajoute ce fameux
2. Il faut reprendre les étapes dès le début:
a. Connection à MySQL.
b. Sélection de la base.
c. Construction de la requête (par exemple $sql1) et puis l'afficher (pour vérifier la syntaxe sql etc etc)
d. Exécution de la requête
e. Récupération du champs désiré (par fetsh array ou quelque chose comme ça).
f. Création d'un nouvelle requête (chaîne de caractères) $sql2 et l'afficher pour vérifier syntaxe etc etc
g. Exécution à nouveau
i. fetsh array à nouveau
Il faut pas mélanger $resultat avec $sql2
1. Pour vérifier la bonne exécution, les gens du PHP ajoute ce fameux
| or die("Erreur");après
mysql_query
2. Il faut reprendre les étapes dès le début:
a. Connection à MySQL.
b. Sélection de la base.
c. Construction de la requête (par exemple $sql1) et puis l'afficher (pour vérifier la syntaxe sql etc etc)
d. Exécution de la requête
$resultat = mysql_query($sql1);
e. Récupération du champs désiré (par fetsh array ou quelque chose comme ça).
f. Création d'un nouvelle requête (chaîne de caractères) $sql2 et l'afficher pour vérifier syntaxe etc etc
g. Exécution à nouveau
i. fetsh array à nouveau
Il faut pas mélanger $resultat avec $sql2
3 nov. 2009 à 00:16