我的SQL陈述正确,但仍然返回错误

时间:2019-07-12 16:36:54

标签: php sql

在我的网站上,我尝试获取一些信息并将其添加到数据库中,但是自从将日期更改为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服务器版本相对应的手册以使用正确的语法

2 个答案:

答案 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})";