J'essaie d'afficher des informations à partir d'une ligne mysql sur cette page. J'utilise $ _GET, car l'identifiant est inclus dans le lien vers la page: www.example.com/page.php?id=1 mais il renvoie cette erreur:problème de syntaxe mysql
Erreur: Vous avez une erreur dans votre Syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de '=' 1 '' à la ligne 1
Est-ce que quelqu'un sait comment résoudre ce problème?
Codeci-dessous:
<?php
$username="xxx";
$password="xxx";
$database="xxx";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die("Unable to select database");
include 'library/config.php';
include 'library/opendb.php';
if(isset($_GET['id']))
{
$query = "SELECT id, title, content, contactname, contactemail, contactnumber ".
"FROM vacancies".
"WHERE id = '{$_GET['id']}'";
$result = mysql_query($query) or die('Error : ' . mysql_error());
list($id, $title, $content, $contactname, $contactemail, $contactnumber) = mysql_fetch_array($result, MYSQL_NUM);
$content = htmlspecialchars($content);
}
if(isset($_POST['update']))
{
$id = $_POST['id'];
$title = $_POST['title'];
$content = $_POST['content'];
$contactname = $_POST['contactname'];
$contactemail = $_POST['contactemail'];
$contactnumber = $_POST['contactnumber'];
if(!get_magic_quotes_gpc())
{
$title = addslashes($title);
$content = addslashes($content);
$contactname = addslashes($contactname);
$contactemail = addslashes($contactemail);
$contactnumber = addslashes($contactnumber);
}
// update the article in the database
$query = "UPDATE vacancies
SET title = '$title', content = '$content', contactname = '$contactname', contactemail = '$contactemail', contactnumber = '$contactnumber'".
"WHERE id = '$id'";
mysql_query($query) or die('Error : ' . mysql_error());
// then remove the cached file
$cacheDir = dirname(__FILE__) . '/cache/';
$cacheFile = $cacheDir . '_' . $_GET['id'] . '.html';
@unlink($cacheFile);
// and remove the index.html too because the file list
// is changed
@unlink($cacheDir . 'index.html');
echo "<b>Job Entry: '$title' updated</b>";
// now we will display $title & content
// so strip out any slashes
$title = stripslashes($title);
$content = stripslashes($content);
$contactname = stripslashes($contactname);
$contactemail = stripslashes($contactemail);
$contactnumber = stripslashes($contactnumber);
}
include 'library/closedb.php';
?>
Merci Kyle, Problème résolu! Je n'ai jamais pensé à mettre le $ _GET là-dedans, et maintenant c'est tout à fait logique! – user96828
.. ça ne fait pas de différence ... – Louis
Mon plaisir. En outre, comme quelques personnes ci-dessous ont dit, vous devriez toujours échapper le contenu soumis par l'utilisateur avec mysql_real_escape_string() pour aider à prévenir l'injection mysql. Changez simplement $ _GET ['id'] en mysql_real_escape_string ($ _ GET ['id']). – Kyle