MySQL查询错误

时间:2009-07-11 23:21:41

标签: php 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行的''附近使用正确的语法。

谢谢:)

3 个答案:

答案 0 :(得分:6)

您没有关闭SQL中的VALUES括号 - 最后一行应该像这样结束:

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

答案 1 :(得分:1)

确实,您需要关闭括号。

下次,如果出现此类错误,请尝试通过打印找出实际执行的SQL。然后,您可以手动分析查询(您将在几秒钟内看到此查询),或者在某些环境中运行它,如果查询更复杂,您可以轻松修改和执行查询。

答案 2 :(得分:0)

我为避免这些陷阱而遵循的一个好习惯是在一行中创建一个查询并在下一行执行查询,如下所示

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

$result = mysqli_query($sql);

另一个节省时间的技巧是省略不必要的连接以便附加'。你的SQL可能比这更简单

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