Requete MySQL fausse ?
Résolu
billou87
-
moderno31 Messages postés 872 Date d'inscription Statut Membre Dernière intervention -
moderno31 Messages postés 872 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voici ma requête MySQL, dans une page PHP :
$query = mysql_query("SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes DESC LIMIT '".$nombre."', '".$limite."'");
Le navigateur m'indique l'erreur suivante : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/is/public_html/dominnov/admin/commandes.php on line 85
Ce qui veut dire que ma requête n'est pas valide, pourtant j'ai beau cherché, je ne trouve aucune erreur ! Aurai-je cumulé trop d'option de tri ? Un problème avec les quotes ?
Merci d'avance !
Voici ma requête MySQL, dans une page PHP :
$query = mysql_query("SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes DESC LIMIT '".$nombre."', '".$limite."'");
Le navigateur m'indique l'erreur suivante : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/is/public_html/dominnov/admin/commandes.php on line 85
Ce qui veut dire que ma requête n'est pas valide, pourtant j'ai beau cherché, je ne trouve aucune erreur ! Aurai-je cumulé trop d'option de tri ? Un problème avec les quotes ?
Merci d'avance !
A voir également:
- Requete MySQL fausse ?
- Fausse alerte mcafee - Accueil - Piratage
- Fausse alerte connexion facebook - Guide
- Mysql community server - Télécharger - Bases de données
- Fausse alerte virus google - Guide
- Comment reconnaître une fausse conversation whatsapp - Forum iPhone
13 réponses
Ton navigateur te renvoie cette erreur parce que la requete elle meme ne renvoie rien.
$query = mysql_query("SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes DESC LIMIT '$nombre', '$limite');
Toutes mes requetes sont de cette sorte, sans concaténer. Quand PHP lira cette variable il va te renvoyer LIMIT '5', '100'
Je crois...que c'est logique
Dis moi si ça fonctionne.
Ps : pk tu as besoin DATE_FORMAT ? Ta date est stockée comment.?
$query = mysql_query("SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes DESC LIMIT '$nombre', '$limite');
Toutes mes requetes sont de cette sorte, sans concaténer. Quand PHP lira cette variable il va te renvoyer LIMIT '5', '100'
Je crois...que c'est logique
Dis moi si ça fonctionne.
Ps : pk tu as besoin DATE_FORMAT ? Ta date est stockée comment.?
J'ai testé plusieurs sorte de requête, et tenté un mysql_error() pour voir d'où l'erreur provient et elle provient de la concaténation des variables (j'ai testé seulement avec les chiffres et ça fonctionne. Le problème vient donc des quotes, ou des points de concaténation, je ne sais pas. Je tatonne différentes syntaxes mais sans aucun résultat ! Ca ne m'arrange evidemment pas du tout de ne pas mettre de variables ( pas très dynamique sinon ).
Sinon ma date est stockée dans la table commandes, et correspond à l'heure d'ajout des données d'une ligne.
Concernant DATE_FORMAT, le developpeur précédent a préféré formaté l'heure à sa manière mais je ne vois pas en quoi cela pourrait gêné, si c'est cela que tu voulais insinuer.
Merci encore pr la réponse !
Sinon ma date est stockée dans la table commandes, et correspond à l'heure d'ajout des données d'une ligne.
Concernant DATE_FORMAT, le developpeur précédent a préféré formaté l'heure à sa manière mais je ne vois pas en quoi cela pourrait gêné, si c'est cela que tu voulais insinuer.
Merci encore pr la réponse !
bonjour
enlever les quotes autour des chiffres nomùbre et limite
$query = mysql_query("SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes DESC LIMIT ".$nombre.",".$limite.");
enlever les quotes autour des chiffres nomùbre et limite
$query = mysql_query("SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes DESC LIMIT ".$nombre.",".$limite.");
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Giheiler -> j'ai essayé ta requête (j'y ai rajouté une quote manquante à la fin !) ce qui donne :
$query = mysql_query("SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes DESC LIMIT ".$nombre.",".$limite."");
Malheuresement, cela ne marche toujours pas et oici le message d'erreur récupéré :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Pas très précis pour le coup, je ne vois pas de quelle quote il parle ! Cette requête commence sérieusement à m'agacer !
$query = mysql_query("SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes DESC LIMIT ".$nombre.",".$limite."");
Malheuresement, cela ne marche toujours pas et oici le message d'erreur récupéré :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Pas très précis pour le coup, je ne vois pas de quelle quote il parle ! Cette requête commence sérieusement à m'agacer !
alors on la découpe
$req = "SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes DESC LIMIT ".$nombre.",".$limite.";
$query = mysql_query($req);
J-L
$req = "SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes DESC LIMIT ".$nombre.",".$limite.";
$query = mysql_query($req);
J-L
Giheller -> ça ne fonctionne toujours pas, et j'ai l'impression qu'on a juste déplacer le problème
En fouillant un peu ce matin, j'ai pu trouver le code du message d'erreur : 1064, apparemment un problème de syntaxe ou de classement de ma base.
Concernant le classement, il est en utf8_unicode, donc il ne devrait pas y avoir de blème de ce côté là, j'essaie maintenant de voir le php autour mais tout me semble normal .... Aurais-je manqué quelque chose .....
En fouillant un peu ce matin, j'ai pu trouver le code du message d'erreur : 1064, apparemment un problème de syntaxe ou de classement de ma base.
Concernant le classement, il est en utf8_unicode, donc il ne devrait pas y avoir de blème de ce côté là, j'essaie maintenant de voir le php autour mais tout me semble normal .... Aurais-je manqué quelque chose .....
Oui ! J'ai déjà essayé dans phpmyadmin (et sans evidemment) la requête, sans les variables et je n'ai eu aucun soucis ! Les variables sont pourtant instanciées et définies dès le début de mon code php.
alors essaie en recomposant ta requête morceau par morceau ( ca d pas la totalité de la requête) jusqu'à voir la partie qui débloque.
1
$req = "SELECT *,COUNT(id_prod) as count"; // ce count nemettrait-il pas la grouille
$query = mysql_query($req);
2
$req = "SELECT *,COUNT(id_prod) as count, DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes ";
$query = mysql_query($req);
3
$req = "SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes;
$query = mysql_query($req);
1
$req = "SELECT *,COUNT(id_prod) as count"; // ce count nemettrait-il pas la grouille
$query = mysql_query($req);
2
$req = "SELECT *,COUNT(id_prod) as count, DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes ";
$query = mysql_query($req);
3
$req = "SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes;
$query = mysql_query($req);
Toutes fonctionnent ! Y compris avec le LIMIT sans les variables ! Dès que j'y mets les variables représentant la premiere instance affichée et le nombre de résultats affichés, il m'affiche la même erreur 1064 :S
Problème résolu ^^ ! Voici la solution !(enfin ca me mets plus d'erreur donc je suppose que c'est juste)
$req = "SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes DESC LIMIT ".(int)$limite.", ".(int)$nombre."";
De ce que je comprend, la concaténation provoque un changement implicite de type de données, passant de int à string , d'ou le "forçage" vers le type int. (corrigez moi si je me trompe). En tout cas ça fonctionne, et ça..... ça n'a pas de prix :D
$req = "SELECT *,COUNT(id_prod) as count,DATE_FORMAT(date,'%d.%m.%Y %H\h%i') as date_fr FROM commandes GROUP BY no_facture ORDER BY id_commandes DESC LIMIT ".(int)$limite.", ".(int)$nombre."";
De ce que je comprend, la concaténation provoque un changement implicite de type de données, passant de int à string , d'ou le "forçage" vers le type int. (corrigez moi si je me trompe). En tout cas ça fonctionne, et ça..... ça n'a pas de prix :D