【问题标题】:PHP PDO rowCount() returning -1PHP PDO rowCount() 返回 -1
【发布时间】:2021-09-20 12:02:04
【问题描述】:

我需要在我的 API 中添加分页系统。我的数据库服务器是 ODBC。我的代码如下所示:

public function pagination($query, $maxperpage, $values=array()){
    $query = explode('LIMIT', $query);
    try {
        $statement = $this->db->prepare($query[0]);
        $statement->execute($values);

        $result['row_number'] = $statement->rowCount();
        $result['max_per_page'] = $maxperpage;
        $result['page_nb'] = ceil($result['row_number']/$maxperpage);
        return $result;
    } catch (\PDOException $e) {
        exit($e->getMessage());
    }
}

但这给了我以下信息:

"pagination": {
    "row_number": -1,
    "max_per_page": "1000",
    "page_nb": 0
}

为什么行号不起作用?

查询看起来不错

从 G2001F.LOCMSTP WHERE LO_DEP=:lodep 中选择 lo_sit, lo_dep, lo_wrh, lo_addr, lo_rotcls, lo_asscls, lo_stotyp, lo_extcod, lo_blccod

而且这些值似乎也被很好地插入了

Array
(
    [lodep] => DEMO
)

$statement->rowCount() 返回 -1 没有意义。

【问题讨论】:

标签: php pdo odbc


【解决方案1】:

来自PHP manual

PDOStatement::rowCount() 返回受 相应的最后执行的 DELETE、INSERT 或 UPDATE 语句 PDOStatement 对象。

如果关联的 PDOStatement 执行的最后一条 SQL 语句是 SELECT 语句,某些数据库可能会返回行数 由该语句返回。但是,不能保证这种行为 适用于所有数据库,不应依赖于便携式 应用程序。

rowCount() 不能保证与 SELECT 查询一起使用,这不是错误。如果你想知道你应该使用的行数

SELECT COUNT(*) FROM G2001F.LOCMSTP WHERE LO_DEP=:lodep

【讨论】:

  • 是的,我最终就是这么做的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2018-05-12
  • 2017-03-14
  • 1970-01-01
相关资源
最近更新 更多