2009-07-11 155 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')";