【问题标题】:php DBAL for MySQLi/MSSQL row fetching用于 MySQLi/MSSQL 行获取的 php DBAL
【发布时间】:2010-08-26 14:00:31
【问题描述】:

我正在尝试在 PHP MySQLi(过程)和 MSSQL 库之上编写一个简单、精简且高效的数据库抽象层,以便像这样使用......

while ($a = db::go('db_name')->query('select * from foo')->row()) {
  print_r($a);
}

我已经编写了课程,但在如何最好地循环结果方面有些挣扎。该类只需要处理选择查询,并且必须处理一些大型结果集。这是->row()方法的sn-p...

public function row() {
  return $this->{'get'.ucwords($this->details['type']).'Row'}();
}
private function getMysqliRow() {
  return @mysqli_fetch_assoc($this->result);
}
private function getMssqlRow() {
  return @mssql_fetch_assoc($this->result);
}

目前,该调用导致无限循环,并且每次都检索同一行,因为结果集中的内部指针不会以与 while ($a = mssql_data_seek($result)) 调用相同的方式递增,这使得完成感觉(结果集不是全局的,您一次应该能够处理多个结果集!)。

那么,有谁知道解决这个问题的优雅而有效的方法?或者是使用数据搜索函数(mysqli_data_seek()mssql_data_seek())并持有指向结果集中当前位置的指针的唯一解决方案?如果是这样,效率如何(我将处理 > 250000 的大型结果集)? while 循环如何处理到达结果集的末尾?

【问题讨论】:

标签: php mysql sql-server mysqli fetch


【解决方案1】:

忽略这个,是我傻了!我没有将结果资源设为静态成员,因此每次调用都会重新检索它。道歉!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多