0

我在我制作的数据库抽象库函数中使用PDOquery

我正在使用fetchAll(),如果你有很多结果,它应该会占用大量内存,所以我想提供一个参数来在 fetchAll 关联数组和可以迭代foreach且需要更少内存的 pdo 结果集之间切换(不知何故)。

我记得听说过这个,我搜索了 PDO 文档,但我找不到任何有用的方法来做到这一点。

有谁知道如何从 PDO 中获取可迭代的结果集,而不仅仅是一个平面数组?我是对的,使用可迭代的结果集会更容易记忆吗?

如果在这种情况下很重要,我正在使用 Postgresql。

.

.

.

当前的查询函数如下,只是为了清楚起见。

/**
 * Running bound queries on the database.
 *
 * Use: query('select all from players limit :count', array('count'=>10));
 * Or: query('select all from players limit :count', array('count'=>array(10, PDO::PARAM_INT)));
**/
function query($sql_query, $bindings=array()){
 DatabaseConnection::getInstance();
 $statement = DatabaseConnection::$pdo->prepare($sql_query);
 foreach($bindings as $binding => $value){
  if(is_array($value)){
   $statement->bindParam($binding, $value[0], $value[1]);
  } else {
   $statement->bindValue($binding, $value);
  }
 }
 $statement->execute();
 // TODO: Return an iterable resultset here, and allow switching between array and iterable resultset.
 return $statement->fetchAll(PDO::FETCH_ASSOC); 
}
4

1 回答 1

1

看起来我已经以 PDOStatement 对象本身的形式找到了我的解决方案,即在执行完之后$statement->execute();您可以简单地传递$statement对象并遍历该对象。不能将它用作数组,但可以用它做几乎所有其他事情。

于 2010-04-22T21:43:59.437 回答