2009-07-11 154 views
0

這個MySQL查詢有什麼問題?MySQL查詢錯誤

$name = mysqli_real_escape_string($db,$_POST['name']); 
$email = mysqli_real_escape_string($db,$_POST['email']); 
$comment = mysqli_real_escape_string($db,$_POST['content']); 
$dt = date("F j, Y, g:i a"); 
$sql = mysqli_query($db, "INSERT INTO `tbl_contact` (`id`, `name`, `email`, `comment`, `date`) 
VALUES (NULL, '".$name."', '".$email."', '".$comment."', '".$dt."'"); 

它保持與

您在您的SQL語法有錯誤而失敗;檢查對應於你的MySQL服務器版本在線路附近使用'2

謝謝:)

回答

6

你不關閉你的SQL的VALUES括號正確的語法手冊 - 最後的線應該像這樣結束:

..., '".$dt."')"); 
      ^
       Added closing parenthesis for the VALUES clause. 
+0

萬分感謝喜歡更簡單,這是在夜間編碼確實給我:( – bear 2009-07-11 23:26:57

1

的確,您需要關閉括號。

下一次,如果您遇到此類錯誤,請嘗試通過打印來確定哪些SQL實際上正在執行。然後,您可以手工分析查詢(您可能會在幾秒鐘內看到這個查詢),或者在某些您可以輕鬆修改和執行查詢(如果查詢更復雜)的環境中運行查詢。

+0

這是非常重要的,如果你使用動態生成的SQL工作。這幾乎是不可能理解如果沒有看到20個concat語句的最終結果,怎麼了? – colithium 2009-07-12 00:11:22

0

之一,我跟着來避免這種陷阱的良好做法是在一個行創建一個查詢,並在下一行執行這樣的查詢

$sql="INSERT INTO `tbl_contact` (`id`, `name`, `email`, `comment`, `date`) 
VALUES (NULL, '".$name."', '".$email."', '".$comment."', '".$dt."')"; 

$result = mysqli_query($sql); 

另一種節省時間把戲ommitting不必要的級聯追加'。您的SQL本來這

$sql="INSERT INTO `tbl_contact` (`id`, `name`, `email`, `comment`, `date`) 
VALUES (NULL, '$name', '$email', '$comment', '$dt')";