Page 1 sur 1

Problème de syntaxe

Posté : 28 nov. 2008, 15:50
par ma_pomme
Bonjour, bonsoir,

serveur mysql version 4.0

structure de ma table

Code : Tout sélectionner

CREATE TABLE `mission` ( `id_mission` int(11) NOT NULL auto_increment, `numeros` int(11) NOT NULL default '0', `pax` int(11) NOT NULL default '0', `contrat` bigint(20) NOT NULL default '0', `ville` varchar(20) NOT NULL default '', `km` int(11) NOT NULL default '0', `pilote` int(11) NOT NULL default '0', `hotesse` int(11) NOT NULL default '0', `pays` varchar(40) NOT NULL default '', `type_mission` varchar(40) NOT NULL default '', KEY `id_mission` (`id_mission`) ) TYPE=MyISAM AUTO_INCREMENT=1 ;

Voila j'ai un souci avec la syntaxe de ma requête que voici

Code : Tout sélectionner

SELECT numeros FROM mission WHERE numeros='548 '
sql me retourne cette 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 'numeros=548' at line 1
alors que phpmyadmin me retourne un résultat avec la même requête

Pourriez-vous m'aiguiller sur la bonne voie car je tourne en rond depuis plusieur heure la dessus :s

Posté : 28 nov. 2008, 16:26
par dunbar
Et sans l'espace ici :
// Actuel
SELECT numeros FROM mission WHERE numeros='548 '
//proposition de correction

SELECT numeros FROM mission WHERE numeros = '548'
:?:

Posté : 28 nov. 2008, 16:26
par jojolapine
Déjà pourquoi mettre des quotes autour de ta valeur?
Si le champ est de type numérique, tu n'en a pas besoin...
Ensuite je vois un espace de trop après la valeur...

Posté : 28 nov. 2008, 16:38
par ma_pomme
les quotes sont là pour marqué l'espace que je ne peu réduire car la valeur est extraite d'une chaine via explode(). Mais avec ou sans cette espace ou quote, phpmyadmin me retourne quand même ma réponse enfin il ne me donne pas d'erreur de syntaxe. c'est pour ça que je ne comprend pas d'ou cela peu venir

Posté : 28 nov. 2008, 16:48
par jojolapine
Et trim() c'est pour les poules?
Sinon fait un echo de ta variable contenant la requête sql dans ton code, qu'on voit si y a pas des différences...

Posté : 28 nov. 2008, 16:52
par dunbar
trim() te permet supprimé les caractères invisibles :wink:

Posté : 28 nov. 2008, 16:55
par jojolapine
les quotes sont là pour marqué l'espace que je ne peu réduire car la valeur est extraite d'une chaine via explode()
C'est pour ça que je parle de trim()!

Posté : 28 nov. 2008, 17:07
par ma_pomme
Et trim() c'est pour les poules?
Sinon fait un echo de ta variable contenant la requête sql dans ton code, qu'on voit si y a pas des différences...
je ne connaissais pas trim() j'ai encore beaucoup de lacune. Sinon c'est déjà un echo de ma requête. Voici la requête de mon code

Code : Tout sélectionner

SELECT numeros FROM mission WHERE numeros=$mission[0]"
et son echo

Code : Tout sélectionner

SELECT numeros FROM mission WHERE numeros=548

Posté : 28 nov. 2008, 17:20
par jojolapine
Là franchment je vois pas...
Fait nous voir le code php en entier... :?
et éventuellement essaye de séparer les variables comme ceci:
$sql="SELECT numeros FROM mission WHERE numeros=".$mission[0];

Posté : 28 nov. 2008, 17:30
par ma_pomme
if (isset($_POST['page']))
{ $file=$_POST['page'];

$mission_t=$_POST['type_mission'];
$pays=$_POST['id_pays'];
$result=explode('Mission ', $file);
$i=1;

while($i<count($result))
{
$result[$i]=str_replace('Nombre', '', $result[$i]);
$mission=explode(' ', $result[$i]);
$mission[11]=str_replace(',','', $mission[11]);
$mission[0] = trim($mission[0]);
$query="SELECT numeros FROM mission WHERE numeros=".$mission[0];
echo $query.'<br />';
$mysql_result=mysql_query($query)
                or die(mysql_error());
if(!$mysql_result)
{
mysql_query("INSERT INTO mission VALUES ('','$mission[0]','$mission[4]','$mission[11]','$mission[16]','mission[19]','$mission[53]','$mission[55]','$pays','$mission_t')")
                or die(mysql_error());
}else{
mysql_query('UPDATE mission set pax=' . $mission[4].', contrat='.$mission[11].', pilote='.$mission[53].', hotesse='.$mission[55].'WHERE numeros='.$mission[0])
                or die(mysql_error());
}

$i=$i+2;

}
Le voila en entier. J'ai essayé comme tu as dit mais rien a faire :?

Posté : 28 nov. 2008, 17:34
par jojolapine
Es-tu sur que celà vient de la première requête, et pas de la dernière?
Change ton code pour toutes tes requêtes en
$sql='...';
mysql_query($sql) or die('Erreur avec la requête:'.$sql.'<br />'.mysql_error());
et reposte le résultat

Posté : 28 nov. 2008, 17:56
par ma_pomme
c'est bon c'est passé je m'acharmais sur cette pauvre requete qui n'y etais pour rien lol juste un espace qui manquait et la variable et le where :? merci encore ^^