Problème de syntaxe

Eléphant du PHP | 86 Messages

28 nov. 2008, 15:50

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

ViPHP
ViPHP | 2291 Messages

28 nov. 2008, 16:26

Et sans l'espace ici :
// Actuel
SELECT numeros FROM mission WHERE numeros='548 '
//proposition de correction

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

ViPHP
ViPHP | 3607 Messages

28 nov. 2008, 16:26

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...

Eléphant du PHP | 86 Messages

28 nov. 2008, 16:38

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

ViPHP
ViPHP | 3607 Messages

28 nov. 2008, 16:48

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...

ViPHP
ViPHP | 2291 Messages

28 nov. 2008, 16:52

trim() te permet supprimé les caractères invisibles :wink:

ViPHP
ViPHP | 3607 Messages

28 nov. 2008, 16:55

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()!

Eléphant du PHP | 86 Messages

28 nov. 2008, 17:07

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

ViPHP
ViPHP | 3607 Messages

28 nov. 2008, 17:20

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];

Eléphant du PHP | 86 Messages

28 nov. 2008, 17:30

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 :?

ViPHP
ViPHP | 3607 Messages

28 nov. 2008, 17:34

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

Eléphant du PHP | 86 Messages

28 nov. 2008, 17:56

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 ^^