silverstripe-framework/model/connect/PDOQuery.php
Damian Mooyman b0239f4330 BUG Fix PDOConnector issues
Travis support for PDO
ATTR_EMULATE_PREPARES = false breaks some test cases
Enable username sans password
Remove unnecessary semicolons delimiting queries
2014-08-01 18:17:51 +12:00

50 lines
1.2 KiB
PHP

<?php
/**
* A result-set from a PDO database.
* @package framework
* @subpackage model
*/
class PDOQuery extends SS_Query {
/**
* The internal MySQL handle that points to the result set.
* @var PDOStatement
*/
protected $statement = null;
protected $results = null;
/**
* Hook the result-set given into a Query class, suitable for use by SilverStripe.
* @param PDOStatement $statement The internal PDOStatement containing the results
*/
public function __construct(PDOStatement $statement) {
$this->statement = $statement;
// Since no more than one PDOStatement for any one connection can be safely
// traversed, each statement simply requests all rows at once for safety.
// This could be re-engineered to call fetchAll on an as-needed basis
$this->results = $statement->fetchAll(PDO::FETCH_ASSOC);
$statement->closeCursor();
}
public function seek($row) {
$this->rowNum = $row - 1;
return $this->nextRecord();
}
public function numRecords() {
return count($this->results);
}
public function nextRecord() {
$index = $this->rowNum + 1;
if (isset($this->results[$index])) {
return $this->results[$index];
} else {
return false;
}
}
}