2011-04-19 84 views
0

我目前正試圖更新我的數據庫中的特定記錄,儘管我已經徹底檢查了語法chrome告訴我,我在某處出錯了。MYSQL更新查詢語法問題

任何建議,將不勝感激

$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()); 


} 

我試圖查詢不變量來檢查它是否是一個問題存在,但它仍然在我尖叫錯誤:

對不起,有一個保存到數據庫時出錯 您的SQL語法有錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以便在測試中使用正確的語法,Source = ../images/Pictures /,Description = This is a test image of test'at line 1

+0

回顯您的$ insertQuery變量並檢查最終查詢。也許有些東西是空的或有任何格式/編碼問題,誰知道(你沒有檢查POST輸入的方式,這是一個安全問題)。 – Alfabravo 2011-04-19 19:17:45

+0

我們無法幫助您,直到您告訴我們「post」變量中傳遞的內容以及數據庫模式的外觀。你也必須防止SQL注入! – ohmusama 2011-04-19 19:20:17

+0

這也是一個安全問題。您可能想要使用mysql_real_escape_string或其他方式來防止SQL注入攻擊。 – 2011-04-19 19:21:28

回答

3

Always escape用戶輸入(mysql_real_escape_string)或使用PDO並分配參數。看來$alttext變量有引號或其他特殊字符。例如,

$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

看來你不是逃避的報價爲您列Description必須有內一個單引號。使用mysql_real_escape_string來避開引號。

+0

添加mysql_real_escape_string並添加我的驗證檢查後,我來實現我正在上傳到錯誤的網站LOL我上傳到實時測試服務器,而不是無訪問測試服務器 它總是最簡單的事情... – 2011-04-19 19:49:40

+0

:)發生時,有一個工作負荷!玩的開心 – 2011-04-19 19:52:42