Я использую PDO внутри функции библиотеки абстракции базы данных query
, которую я создал.
Я использую fetchAll()
, который, если у вас много результатов, должен занять много памяти, поэтому я хочу предоставить аргумент для переключения между ассоциативным массивом fetchAll и pdo набор результатов, который можно перебирать с foreach
и требовать меньше памяти (каким-либо образом).
Я помню, что слышал об этом, и я искал документы 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);
}