Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL查询错误_Php_Mysql - Fatal编程技术网

Php MySQL查询错误

Php MySQL查询错误,php,mysql,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

这个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行“”附近要使用的正确语法


谢谢:)

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

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

实际上,您需要关闭括号


下次,如果您遇到这种类型的错误,请尝试通过打印它来找出实际执行的SQL。然后,您可以手动分析查询(几秒钟后您就会看到这个查询),或者在某个环境中运行它,在该环境中,如果查询更复杂,您可以轻松地修改和执行查询。

为避免此类陷阱,我遵循的一个好做法是在一行中创建查询,然后在下一行中执行查询,如下所示

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

$result = mysqli_query($sql);
$sql="INSERT INTO `tbl_contact` (`id`, `name`, `email`, `comment`, `date`) 
VALUES (NULL, '$name', '$email', '$comment', '$dt')";
另一个节省时间的技巧是使用不必要的连接来附加'。您的sql本可以像这样更简单

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

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

如果您使用的是动态生成的SQL,这一点非常重要。如果看不到你的20个concat声明的最终结果,几乎不可能理解到底出了什么问题