2011-04-19 2 views
0

Je suis actuellement en train de tenter de mettre à jour un enregistrement spécifique dans ma base de données mais bien que j'ai vérifié la syntaxe, chrome me dit que je me suis trompé quelque part.Problèmes de syntaxe MYSQL Update Query

Tout conseil serait grandement apprécié

$title = $_POST["title"]; 
$alttext = $_POST["alttext"]; 
$description = $_POST["description"]; 
$price = $_POST["price"]; 
$id = $_POST["ID"]; 
$insertQuery = "UPDATE cmsproducts SET Title = '$title', Alt_Text = '$alttext', Source = '$target_path', Description = '$description', Price = $price WHERE ID = $id"; 

// Save the form data into the database 
if ($result = $connector->query($insertQuery)){ 

// It worked, give confirmation 
echo '<center><b><span style="color: #FF0000;">Product added to the database</span></b></center><br /><br />'; 

}else{ 

// It hasn't worked so stop. Better error handling code would be good here! 
echo('<center>Sorry, there was an error saving to the database</center>'); 
echo "<center><b>File Name:</b> ".$target_path."<br/>"; 
die(mysql_error()); 


} 

J'ai essayé la requête sans les variables pour vérifier si elle était un problème là-bas, mais il hurlait encore erreur me:

Désolé, il y avait un erreur d'enregistrement dans la base de données 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 'test, Source = ../images/Images /, Description = Ceci est une image test de test' à la ligne 1

+0

echo votre variable $ insertQuery et vérifiez la requête finale. Peut-être que quelque chose est vide ou a un problème de format/encodage, qui sait (vous ne vérifiez pas l'entrée POST d'ailleurs, c'est un problème de sécurité). – Alfabravo

+0

Nous ne pouvons pas vous aider, jusqu'à ce que vous nous fassiez savoir ce qui est passé dans les variables "post", ainsi que ce à quoi ressemble le schéma de base de données. Aussi, vous devez protéger contre l'injection SQL !! – ohmusama

+0

Ceci est également un problème de sécurité. Vous pouvez utiliser mysql_real_escape_string ou d'autres moyens pour éviter les attaques par injection SQL. –

Répondre

3

Toujours échapper entrée utilisateur (mysql_real_escape_string) ou utiliser PDO et affecter des paramètres. Il semble que la variable $alttext ait une citation ou un autre caractère spécial. Par exemple,

$title = mysql_real_escape_string($_POST["title"]); 
$alttext = mysql_real_escape_string($_POST["alttext"]); 
$description = mysql_real_escape_string($_POST["description"]); 
$price = mysql_real_escape_string($_POST["price"]); 
$id = mysql_real_escape_string($_POST["ID"]); 
$insertQuery = "UPDATE cmsproducts SET Title = '$title', 
    Alt_Text = '$alttext', Source = '$target_path', 
    Description = '$description', Price = '$price' WHERE ID = '$id'"; 
1

Il semble que vous n'êtes pas échapper à des citations que votre colonne Description doit avoir une seule citation à l'intérieur. Utilisez mysql_real_escape_string pour échapper les citations.

+0

Après avoir ajouté la mysql_real_escape_string et ajouté mes vérifications de validation, j'ai réalisé que je téléchargeais sur le mauvais site LOL que je téléchargeais sur le serveur de test en direct plutôt que sur le serveur de test sans accès C'est toujours la chose la plus simple ... –

+0

:) arrive quand il y a une charge de travail !! S'amuser –