微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的 PDO 准备好的语句不适用于 fetchALL 和 Limit

如何解决我的 PDO 准备好的语句不适用于 fetchALL 和 Limit

我正在尝试使用准备好的 PDO 语句从我的数据库获取一些产品。如果我将变量包含在 sql 中,则公式运行良好,但这当然是非常糟糕的做法。

工作公式:


protected function getSomeProducts($somequantity){
        $sql = "SELECT * FROM products ORDER by ID DESC LIMIT $somequantity";
        
        $stmt = $this->connect()->query($sql);
        $result = $stmt->fetchAll();
        return $result;


我对准备好的语句的处理方法

protected function getSomeProducts($somequantity){
        $sql = "SELECT * FROM products ORDER by ID DESC LIMIT ?";
        
        $stmt = $this->connect()->prepare($sql);
        $stmt->execute([$somequantity]);
        $result = $stmt->fetchAll();

        return $result;
        
        
    }


这是我收到的错误消息:

致命错误 :未捕获的 PDOException:sqlSTATE[42000]:语法错误或访问冲突:1064 您的 sql 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的“6”附近使用的正确语法。

知道我做错了什么吗?

解决方法

替换下面一行

$stmt->execute([$somequantity]);

$stmt->bindParam(1,$somequantity,PDO::PARAM_INT);
$stmt->execute();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。