Page 1 sur 2

Sql syntax error ?

Posté : 27 janv. 2007, 21:12
par Invité
Bonjour,

j'ai une erreur que je ne comprend pas car ce script fonctionnait sans problème sur un autre hébergeur, là , je suis sur serveur privé avec version mysql 4.0.16 et php my admin 2.6.2 !

l'erreur :
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 'SELECT winz FROM membres WHERE pseudo='Maryse')' at line 1
le script :
<?php
$rv = mysql_query("SELECT COUNT(*) FROM membres WHERE com >(SELECT com FROM membres WHERE pseudo='$pseudo')") or die ('Erreur 12 : '.mysql_error());
$aqd = mysql_fetch_array($rv);
$acfr = $aqd['COUNT(*)'];  
?>
je ne comprend pas !

merci de votre aide !

Posté : 27 janv. 2007, 21:18
par Ajoloca
Bonjour,

J'ai l'impression que MySQL et toi vous ne parlez pas de la même requête.

Selon MySQL la requête en question parle de 'winz'
SELECT winz FROM membres WHERE pseudo='Maryse'
chose que je ne vois pas dans la tienne.

Posté : 27 janv. 2007, 21:30
par Invité
J'ai modifier mais cela n'a rien a voir !

Juste un oubli pour le forum

Posté : 27 janv. 2007, 21:32
par Ajoloca
Comme tu comprendras,
Tu nous facilites pas la tâche, toi tu as le code et l'erreur, tu ne trouves pas.
Comment veux-tu que nous on trouve sans le code (le vrai) et l'erreur (la vrai) :?: :?: :?:

Posté : 27 janv. 2007, 21:32
par Invité
Si tu préfère :

l'erreur :
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 'SELECT com FROM membres WHERE pseudo='Maryse'
et le code :
<?php
$rv = mysql_query("SELECT COUNT(*) FROM membres WHERE com >(SELECT com FROM membres WHERE pseudo='$pseudo')") or die ('Erreur 12 : '.mysql_error());
$aqd = mysql_fetch_array($rv);
$acfr = $aqd['COUNT(*)'];  
?>

Posté : 27 janv. 2007, 21:36
par Ajoloca
Re,
Je reste persuadé que cette erreur ne corresponds pas à ce code.

Dans le message (au début) je devrais voir 'Erreur 12 : ', non :?: :?: :?:
Si je me fie à ça
or die ('Erreur 12 : '.mysql_error());

Posté : 27 janv. 2007, 21:39
par HD
si ton script est inclut dans une autre page, l'erreur vient probablement de la page qui inclue (fait appele) à ce script

Posté : 27 janv. 2007, 21:49
par Invité
Re,
Je reste persuadé que cette erreur ne corresponds pas à ce code.

Dans le message (au début) je devrais voir 'Erreur 12 : ', non :?: :?: :?:
Si je me fie à ça
or die ('Erreur 12 : '.mysql_error());
j'ai juste retirer le Erreur 12 !!!! sinon,cette erreur correspond bien a ce script !

Ensuite,non,je n'utilise pas d'includes pour ce script !

Il fonctionnait très bien sur un autre hébergeur !

Posté : 27 janv. 2007, 21:51
par Ajoloca
Re,

Sous quelle version de MySQL tu exécutes ce code ?

Posté : 27 janv. 2007, 21:56
par Invité
mysql 4.0.16 et Php My Admin 2.6.2 !

je pense que le problème vient de là mais comment y remédier ?

Posté : 27 janv. 2007, 21:59
par Ajoloca
Re,

Donc ne sois pas étonné, les requêtes imbriquées sont supportées à partir de la version 4.1 comme tu peu le constater ICI

Posté : 27 janv. 2007, 22:03
par Invité
Aie !

j'ai regarder un peu ca et effectivement, voilà mon problème :(

J'ai vu que je pouvait me passer des sous-requetes pour mon code mais comment faire car je comprend pas grand chose !

Posté : 27 janv. 2007, 22:18
par Ajoloca
Re,

Dis-nous ce que tu cherches à faire et la structure de ta table.

Posté : 27 janv. 2007, 22:31
par Invité
C'est un code pour un classement !

Par exemple,le membre passe 10 commandes,c'est lui qui en a le plus,donc,il est premier dans la position !

par contre,la structure de la table ne servira pas a grand chose puisque je me base sur les "com" pour le classement !

sur le manuel de référence mysql,j'ai vu que l'on pouvait réecrire ce code sans effectuer de sous requetes , par exemple :

Code avec sous requete :

SELECT * FROM t1 WHERE id IN (SELECT id FROM t2);

le meme code mais sans sous requete :

SELECT t1.* FROM t1,t2 WHERE t1.id=t2.id;

et donc mon code avec sous requete :
SELECT COUNT(*) FROM membres WHERE com >(SELECT com FROM membres WHERE pseudo='$pseudo')
voilà,il faut donc refaire ce code mais sans sous requete comme dans l'exemple un peu plus haut. Le hic,je comprend pas !

Posté : 27 janv. 2007, 22:38
par Ajoloca
Re,

En réalité tu veux un classement des membres en fonction du nombre de commandes, c'est ça?