2012-10-10 136 views
-1

可能重複:
MySQL - when to use single quotes, double quotes, and backticks?MySQL查詢更新

我有這樣的一段代碼,我不能得到正常工作。

require_once("../Packages/Connection.php"); 

     $text = mysql_real_escape_string($_POST["articleText"]); 

     $method = $_POST['method']; 
     $articleId = $_POST['articleId']; 

     if($method == "update") 
     { 
      mysql_query("UPDATE Articles SET 'text'='".$text."' WHERE 'id'='".$articleId."'") or die(mysql_error()); 
     } 

很是煩人了我這麼多, 這是錯誤我得到 - 你有一個錯誤的SQL語法;檢查對應於你的MySQL服務器版本正確的語法使用近'文本「=」 tester2' 手動WHERE‘身份證’=‘29’」在1號線...

預先感謝

+2

我建議轉義$ articleId,因爲你的SQL不是這樣。甚至更好的是你應該使用PDO並準備好語句。 – Niborb

+1

您是否按照錯誤消息中的建議檢查了Mysql手冊? – hakre

回答

0
mysql_query("UPDATE Articles SET text='".$text."' WHERE id='".$articleId."'") or die(mysql_error()); 
1

爲什麼你在你的SQL「文本」 ...

應該僅僅是文字是和多數民衆贊成:(ID爲同樣的事情)

mysql_query("UPDATE Articles SET text = '".$text."' WHERE id='".$articleId."'") or die(mysql_error()); 

什麼,你可能有困惑「,」與,是倒退或「`」逃避人物和有利於保留關鍵字...

+0

好的,謝謝:)但我有一個朋友幫助我,就在我發佈這個..對不起。 (「更新文章設置文本='$ text'WHERE id ='$ articleId'」)或死(mysql_error()); – JapSeyz

+0

這正是我發佈的除了你已經使用「變量解析」內的字符串,而我乾淨地結束了字符串。取決於品味... –

-2

你應該使用這個

mysql_query("UPDATE Articles SET text ={$text} WHERE id ={$articleId}") or die(mysql_error()); 
+1

你會得到這樣的查詢語法錯誤。你需要引用文本值。 – Jocelyn

0

嘗試

mysql_query("UPDATE Articles SET `text`='".$text."' WHERE `id`='".$articleId."'") 
0

首先構建查詢,然後執行它:

$sql = "UPDATE Articles SET 'text'='".$text."' WHERE 'id'='".$articleId."'"; 
$r = mysql_query($sql); 
if (!$r) { 
    echo "Query: ", $sql, "\n"; 
    echo "Error: ", mysql_error(); 
    die(); 
} 

這將允許您更好地審查你發送的內容到底是什麼他的數據庫,以便您可以實際檢查語法正如錯誤消息所建議給你的。