PHP - mysqli 中的错误 1064 尝试进行选择查询



我是这个网站的新用户。 我正在尝试执行这个简单的查询:

$id_book=$_REQUEST['id_book'];
$date=date("Y/m/d");
$sql="INSERT INTO books(id_book,date) VALUES($id_book,'$date')";
if(!$mysqli->query($sql)){
die($mysqli->error.". ".$mysqli->errno);
};

但收到此错误消息:

您的 SQL 语法有误;请查看手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近 1 号线的"2019/02/27")"。1064

我做错了什么?有人可以帮我吗?

首先,不要将该$_REQUEST['id_book']变量注入 SQL 中,请参阅如何防止 PHP 中的 SQL 注入?并使用预准备语句。

您需要为 MySQL 使用正确的 DATE 格式:

$date = date("Y-m-d");

此外,date是 MySQL 中的保留字,因此请为列名选择其他内容或使用反引号:

// placeholders for prepared statement ?
$sql = "INSERT INTO books(id_book, `date`) VALUES(?, ?)";

尝试在日期中正确转换日期字符串

$sql="INSERT INTO books(id_book,date) VALUES($id_book,str_to_date('$date', '%Y/%m/%d')";

无论如何,你不应该在SQL中使用PHP var..你有SQL注入的风险..为了避免这种情况,请查看你的msysql驱动程序,用于准备语句和绑定参数

最新更新