在我的网站上,我尝试获取一些信息并将其添加到数据库中,但是自从将日期更改为datetime以来,整个SQL语句不再起作用。
我在网上到处看,似乎没有人遇到同样的问题,我可能只是错过了一些东西,但是SQL语句对我来说是正确的。
public function addTimeLine($typeOfPost,$post,$idImage,$numberImage){
$post = addslashes($post);
$typeOfPost = addslashes($typeOfPost);
$date = date("Y-m-d H:i:s");
$query = "INSERT INTO `time_line` ( `special_note`, `type`, `id_image`, `number_image`, `dates`) VALUES ( '".$post."', '".$typeOfPost."', ".$idImage.", ".$numberImage.", '".$date."')";
$ps = $this->_db->prepare($query);
$ps->execute();
}
它给了我这个错误
致命错误:未捕获的PDOException:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误;请参阅附录A。在第1行的'1,'2019-07-12 16:29:58')'附近检查与MySQL服务器版本相对应的手册以使用正确的语法
答案 0 :(得分:1)
您没有正确使用准备好的语句。您需要使用占位符,然后在execute
public function addTimeLine($typeOfPost, $post, $idImage, $numberImage) {
$date = date("Y-m-d H:i:s");
$query = "INSERT INTO `time_line` ( `special_note`, `type`, `id_image`, `number_image`, `dates`) VALUES ( ?, ?, ?, ?, NOW())";
$ps = $this->_db->prepare($query);
$ps->execute([
$post,
$typeOfPost,
$idImage,
$numberImage
]);
}
答案 1 :(得分:-1)
您缺少引号,请尝试以下操作:
$query = "INSERT INTO time_line(`special_note`, `type`, `id_image`, `number_image`, `dates`) VALUES ({$post},{$typeOfPost},{$idImage},{$numberImage},{$date})";