You have an error in your SQL syntax; check the manual that

Aethanor
Invité n'ayant pas de compte PHPfrance

01 juil. 2010, 00:51

Bonjour,
Je suis en train de réaliser un jeu en ligne et je me suis retrouvé face à 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 'force='2', or= '0' WHERE pseudo='Aethanor'' at line 1'

Je vous mets le code en question:
<?php 
session_start();

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Heroes'Kingdom</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link href="style.css" rel="stylesheet" type="text/css" />

 
 </head>
 <body>
 
<?php 
//connexion à infoscompte.
@mysql_connect("localhost","root","")
   or die("Impossible de se connecter à la base de données.");
@mysql_select_db("jeu")
   or die("Impossible de se connecter à la base de données.");
	  $req = mysql_query("SELECT * FROM infoscompte WHERE login='".$_SESSION['pseudo']."'") or die(mysql_error());
      $data = mysql_fetch_array($req);
//connexion à joueurs.	  
      $req = mysql_query("SELECT * FROM joueurs WHERE pseudo='".$_SESSION['pseudo']."'") or die(mysql_error());
      $data = mysql_fetch_array($req);
	  
$or=$data['or'];
if ($or-1000>=0)
{

$force=$data['force'];
$force=$force+=1;
$or=$data['or'];
$or=$or-=1000;

$sql="UPDATE  joueurs SET force='".$force."', or= '".$or."' WHERE pseudo='".$_SESSION['pseudo']."'"; 
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());  

}
else
{}

header('Location: Accueil.php');
 ?>
	  
	  
	 </html>

Au premier abord le code peu sembler bizarre, surtout au niveau du cafouillage dans les variables :? Mais c'est juste que je ne savis pas quoi mettre et que du coup, j'ai mis n'importe quoi :mrgreen:

Voilà voilàa! Si quelqu'un peut m'aider :priere:
D'avance, merci.

ViPHP
ViPHP | 5462 Messages

01 juil. 2010, 10:16

"or" est un mot réservé en mysql il faut que tu proteges t'es champs avec des guillemets obliques `
Modifié en dernier par stealth35 le 01 juil. 2010, 13:50, modifié 1 fois.

Aethanor
Invité n'ayant pas de compte PHPfrance

01 juil. 2010, 13:49

Pas bête :)
J'essaie tout de suite.

Aethanor
Invité n'ayant pas de compte PHPfrance

01 juil. 2010, 13:55

Non c'est pas ça... :(
J'ai carrément changé le nom de ma variable, que j'ai aussi changé dans ma base de données. Mais non. Toujours le même message.

ViPHP
ViPHP | 5462 Messages

01 juil. 2010, 13:59

Non c'est pas ça... :(
J'ai carrément changé le nom de ma variable, que j'ai aussi changé dans ma base de données. Mais non. Toujours le même message.
je te conseil de mettre ta requete dans un variable
exemple
$sql = 'SELECT blabla.....';
$req = mysql_query($sql);

ce qui te permet de faire un petit "echo $sql" pour voir ta requete final et ducoup faire
$req = mysql_query($sql) or exit($sql . '<br />' . mysql_error());

Aethanor
Invité n'ayant pas de compte PHPfrance

01 juil. 2010, 14:12

Euh j'ai pas tout compris là...

ViPHP
ViPHP | 5462 Messages

01 juil. 2010, 14:27

Euh j'ai pas tout compris là...
tu l'as deja fais pour ta requête, j'avais pas vu
ducoup montre l'erreur complete

Aethanor
Invité n'ayant pas de compte PHPfrance

01 juil. 2010, 14:38

Oui pardon j'aurais du faire ça des le début. Voici l'erreur en entier cette fois.
Erreur SQL !UPDATE joueurs SET force=2, piece= 0 WHERE pseudo='Aethanor'
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 'force=2, piece= 0 WHERE pseudo='Aethanor'' at line 1

ViPHP
ViPHP | 5462 Messages

01 juil. 2010, 14:48

Oui pardon j'aurais du faire ça des le début. Voici l'erreur en entier cette fois.
Erreur SQL !UPDATE joueurs SET force=2, piece= 0 WHERE pseudo='Aethanor'
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 'force=2, piece= 0 WHERE pseudo='Aethanor'' at line 1
les champs force et piece son bien de type int ?

Aethanor
Invité n'ayant pas de compte PHPfrance

01 juil. 2010, 15:02

Oui. Int(11)

Aethanor
Invité n'ayant pas de compte PHPfrance

01 juil. 2010, 15:07

C'est bon j'ai réussi! Il fallait mettre les `` autour du champ force aussi. Parce que apparemment c'est un mot clé SQL.
Merci à toi pour ton aide!