Requete MySQL fausse ?
Résolu/Fermé
billou87
-
17 août 2009 à 17:39
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 - 18 août 2009 à 18:03
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 - 18 août 2009 à 18:03
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
- Musique fausse blonde infiltré ✓ - Forum Musique / Radio / Clip
13 réponses
giheller
Messages postés
1875
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
3 février 2024
142
17 août 2009 à 17:52
17 août 2009 à 17:52
bonsoir,
non l'erreur est sur l'instruction où se trouve mysql_fetch_array
non l'erreur est sur l'instruction où se trouve mysql_fetch_array
moderno31
Messages postés
870
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
17 août 2009 à 22:12
17 août 2009 à 22:12
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 !
giheller
Messages postés
1875
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
3 février 2024
142
18 août 2009 à 10:21
18 août 2009 à 10:21
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 !
giheller
Messages postés
1875
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
3 février 2024
142
18 août 2009 à 11:06
18 août 2009 à 11:06
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 .....
giheller
Messages postés
1875
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
3 février 2024
142
18 août 2009 à 12:07
18 août 2009 à 12:07
la requête fonctionne-t-elle en la passant dans phpmyadmin ?
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.
giheller
Messages postés
1875
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
3 février 2024
142
18 août 2009 à 14:59
18 août 2009 à 14:59
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
moderno31
Messages postés
870
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
92
18 août 2009 à 18:03
18 août 2009 à 18:03
changement de type de données dans mysql ? ça m'étonne ça
Mais tant mieux si cela fonctionne de ton coté.
Mais tant mieux si cela fonctionne de ton coté.