Problème d'argument dans ma requête ?
Dacobah
Messages postés
272
Statut
Membre
-
Dalida Messages postés 7114 Statut Contributeur -
Dalida Messages postés 7114 Statut Contributeur -
Bonjour à tous et à toutes,
je bloque une fonction qui permet d'exécuter des requêtes. Je vous montre mon code (pourtant pas si long) car mieux vaut quelques lignes de code qu'un long discours ...
Dans le fichier fonctions.php, nous avons :
<?php
function connexion($serveur, $utilisateur, $motdepasse){
mysql_pconnect($serveur, $utilisateur, $motdepasse) or afficheMessageErreur("Connexion impossible !");
}
function afficheMessageErreur($message){
die ("<strong><u>$message</u></strong>");
}
function siExisteRetourne($result, $message){
if ($result){
return $result;
}else{
afficheMessageErreur($message);
}
}
function executerRequete($sql, $database){
$result = mysql_db_query($database, mysql_real_escape_string($sql));
siExisteRetourne($result, "Erreur durant l'exécution de la requête !");
}
function assoc($result){
$result = mysql_fetch_assoc($result);
siExisteRetourne($result, "Erreur dans la génération du tableau associatif !");
}
?>
Et ... dans le fichier index.php, nous avons :
<?php
require_once("fonctions.php");
require_once("conf.php"); // fichier qui contient mes constantes SERVEUR, NOM, MDP, BASE (définies avec la fonction define)
connexion(SERVEUR, NOM, MDP);
$a = executerRequete("SELECT * FROM admin", BASE);
$b = mysql_fetch_assoc($a); <----------------------------------------- Ligne où php me trouve une erreur
?>
Et j'obtiens donc un message d'erreur : Warning: mysql_fetch_assoc is not a valid MySQL result resource (à la ligne montrée par une flèche). D'après ce que j'ai compris, mon $a n'est pas un argument valide. Pourtant en regardant la documentation de php.net, ils précisent que cet argument doit être la ressource de résultat qui vient d'être évaluée et que ce résultat vient de l'appel à la fonction mysql_query(). J'ai donc essayé de remplacer mysql_db_query() par mysql_query mais j'obtiens la même chose.
Des idées ? Moi je bloque ...
Merci d'avance pour vos réponses.
je bloque une fonction qui permet d'exécuter des requêtes. Je vous montre mon code (pourtant pas si long) car mieux vaut quelques lignes de code qu'un long discours ...
Dans le fichier fonctions.php, nous avons :
<?php
function connexion($serveur, $utilisateur, $motdepasse){
mysql_pconnect($serveur, $utilisateur, $motdepasse) or afficheMessageErreur("Connexion impossible !");
}
function afficheMessageErreur($message){
die ("<strong><u>$message</u></strong>");
}
function siExisteRetourne($result, $message){
if ($result){
return $result;
}else{
afficheMessageErreur($message);
}
}
function executerRequete($sql, $database){
$result = mysql_db_query($database, mysql_real_escape_string($sql));
siExisteRetourne($result, "Erreur durant l'exécution de la requête !");
}
function assoc($result){
$result = mysql_fetch_assoc($result);
siExisteRetourne($result, "Erreur dans la génération du tableau associatif !");
}
?>
Et ... dans le fichier index.php, nous avons :
<?php
require_once("fonctions.php");
require_once("conf.php"); // fichier qui contient mes constantes SERVEUR, NOM, MDP, BASE (définies avec la fonction define)
connexion(SERVEUR, NOM, MDP);
$a = executerRequete("SELECT * FROM admin", BASE);
$b = mysql_fetch_assoc($a); <----------------------------------------- Ligne où php me trouve une erreur
?>
Et j'obtiens donc un message d'erreur : Warning: mysql_fetch_assoc is not a valid MySQL result resource (à la ligne montrée par une flèche). D'après ce que j'ai compris, mon $a n'est pas un argument valide. Pourtant en regardant la documentation de php.net, ils précisent que cet argument doit être la ressource de résultat qui vient d'être évaluée et que ce résultat vient de l'appel à la fonction mysql_query(). J'ai donc essayé de remplacer mysql_db_query() par mysql_query mais j'obtiens la même chose.
Des idées ? Moi je bloque ...
Merci d'avance pour vos réponses.
A voir également:
- Problème d'argument dans ma requête ?
- Python est introuvable. exúcutez sans argument pour procúder ó l - Forum Ubuntu
- Requete sql pix - Forum PHP
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
- Additions et multiplication dans des requêtes SQL ✓ - Forum MySQL
- Erreur de requete facebook - Forum Facebook
4 réponses
salut,
pour débuguer, il faut essayer de tracer l'erreur pas tes propres moyens en retournant les variables clés :
modifies ton code comme ça :
à l'affichage tu récupère la requête qui est entre les '#' et tu la testes directement dans PHPMyAdmin.
et tu regarde ce qu'il t'imprime pour '$a', si c'est un objet, quel est son type.
c'est un peu crado comme méthode mais ça devrait te permettre d'avancer.
pour débuguer, il faut essayer de tracer l'erreur pas tes propres moyens en retournant les variables clés :
modifies ton code comme ça :
connexion(SERVEUR, NOM, MDP);
$a = executerRequete("SELECT * FROM admin", BASE);
echo( "#SELECT * FROM admin#" );
print_r( $a );
$b = mysql_fetch_assoc($a);
à l'affichage tu récupère la requête qui est entre les '#' et tu la testes directement dans PHPMyAdmin.
et tu regarde ce qu'il t'imprime pour '$a', si c'est un objet, quel est son type.
c'est un peu crado comme méthode mais ça devrait te permettre d'avancer.
print_r($a) qui devrait me renvoyer un tableau
non il devrait renvoyer une ressource, mais en tout cas il ne devrait pas renvoyer du vide !
essaie
puis essaie avec :
non il devrait renvoyer une ressource, mais en tout cas il ne devrait pas renvoyer du vide !
essaie
function executerRequete($sql, $database){
$result = mysql_db_query($database, mysql_real_escape_string($sql));
print_r( $result );
siExisteRetourne($result, "Erreur durant l'exécution de la requête !");
}
puis essaie avec :
$result = mysql_query($database, $sql); $result = mysql_query(mysql_real_escape_string($sql)); $result = mysql_($database, $sql); $result = mysql_($sql);<
oui c'est le 'mysql_real_escape_string()' qui ne doit pas être utilisée sur la requête mais sur les variables à y insérer.
dans ton cas elle est inutile puisque tu maîtrises le contenu de la requête.
dans ton cas elle est inutile puisque tu maîtrises le contenu de la requête.
Oui j'ai confondu print_r et print_a.
Autrement, tu avais raison c'est mysql_real_escape_string() qui n'est pas nécessaire et il y avait également ma fonction siExisteRetourne() qui n'était pas bonne.
J'ai aussi essayé de voir ce que donnait un var_dump sur ma variable.
Bref, problème résolu !
Merci beaucoup pour le temps que tu as consacré à mon problème.
Autrement, tu avais raison c'est mysql_real_escape_string() qui n'est pas nécessaire et il y avait également ma fonction siExisteRetourne() qui n'était pas bonne.
J'ai aussi essayé de voir ce que donnait un var_dump sur ma variable.
Bref, problème résolu !
Merci beaucoup pour le temps que tu as consacré à mon problème.
Je reste bloqué malgré tout. Peut-etre mysql_db_query mal utilisée ? Je continue mon débugage mais reste ouvert à toute solution / proposition.