【问题标题】:PDO where clause and Limit can not work at a timePDO where 子句和 Limit 不能同时工作
【发布时间】:2016-12-19 19:07:09
【问题描述】:
  function manage_user($startFrom = 0, $itemPerPage = 5)
    {
        $_userData = array();
        $this->db->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
        $query = $this->db->prepare("SELECT * FROM `user_info` LIMIT ?, ? WHERE `user_info`.`status` = ? ");
        $query->execute(array($startFrom,$itemPerPage,'active')) or die(print_r($query->errorInfo(), true));
        $result = $query->fetchAll(\PDO::FETCH_ASSOC);
        foreach ($result as $row) {
            $_userData[] = $row;
        }
        return $_userData;
    }

如果只使用限制,那么它工作正常。当使用 where 子句时,它会出错。
致命错误:在非对象上调用成员函数 execute()
在 $query->execute() 行

【问题讨论】:

  • Limit 遵循正常语法中的 where。 (SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT) 移动限制,使其位于 where 之后

标签: php mysql mysqli pdo


【解决方案1】:

您将LIMIT 和WHERE 子句放在一起。 WHERE 应该出现在 LIMIT 子句之前,如下所示。此外,没有ORDER BY 的LIMIT 子句几乎没有意义。

WHERE `user_info`.`status` = ? LIMIT ?, ? 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-03
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    相关资源
    最近更新 更多