This commit is contained in:
Thomas Portelange 2023-10-26 07:55:34 +00:00 committed by GitHub
commit c2381d713a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 3 deletions

View File

@ -26,6 +26,8 @@ class SQLite3Query extends Query
*/ */
protected $handle; protected $handle;
private int $count = 0;
/** /**
* Hook the result-set given into a Query class, suitable for use by framework. * Hook the result-set given into a Query class, suitable for use by framework.
* @param SQLite3Connector $database The database object that created this query. * @param SQLite3Connector $database The database object that created this query.
@ -35,6 +37,8 @@ class SQLite3Query extends Query
{ {
$this->database = $database; $this->database = $database;
$this->handle = $handle; $this->handle = $handle;
// Count early to make sure we don't interfere with the generator and rewind operation
$this->count = $this->countRecords();
} }
public function __destruct() public function __destruct()
@ -44,18 +48,22 @@ class SQLite3Query extends Query
} }
} }
public function numRecords()
{
return $this->count;
}
/** /**
* @todo This looks terrible but there is no SQLite3::get_num_rows() implementation * @todo This looks terrible but there is no SQLite3::get_num_rows() implementation
*/ */
public function numRecords() private function countRecords(): int
{ {
// Some queries are not iterable using fetchArray like CREATE statement // Some queries are not iterable using fetchArray like CREATE statement
if (!$this->handle->numColumns()) { if (!$this->handle->numColumns()) {
return 0; return 0;
} }
$this->handle->reset(); $c = 0;
$c=0;
while ($this->handle->fetchArray()) { while ($this->handle->fetchArray()) {
$c++; $c++;
} }