DB row iterator

This commit is contained in:
2022-06-08 18:37:08 +02:00
parent 8b49b26f24
commit bce59c5f92
8 changed files with 189 additions and 43 deletions

View File

@@ -41,6 +41,11 @@ use Objects\ConnectionData;
abstract class SQL {
const FETCH_NONE = 0;
const FETCH_ONE = 1;
const FETCH_ALL = 2;
const FETCH_ITERATIVE = 3;
protected Logger $logger;
protected string $lastError;
protected $connection;
@@ -116,7 +121,7 @@ abstract class SQL {
public abstract function connect();
public abstract function disconnect();
public function executeQuery(Query $query, bool $fetchResult = false) {
public function executeQuery(Query $query, int $fetchType = self::FETCH_NONE) {
$parameters = [];
$queryStr = $query->build($parameters);
@@ -130,16 +135,16 @@ abstract class SQL {
return false;
}
$res = $this->execute($queryStr, $parameters, $fetchResult);
$res = $this->execute($queryStr, $parameters, $fetchType);
$success = ($res !== FALSE);
// fetch generated serial ids for Insert statements
$generatedColumn = ($query instanceof Insert ? $query->getReturning() : null);
if($success && $generatedColumn) {
if ($success && $generatedColumn) {
$this->fetchReturning($res, $generatedColumn);
}
return $fetchResult ? $res : $success;
return $fetchType === self::FETCH_NONE ? $success : $res;
}
public function getWhereClause($conditions, &$params): string {
@@ -237,7 +242,7 @@ abstract class SQL {
}
// Statements
protected abstract function execute($query, $values=NULL, $returnValues=false);
protected abstract function execute($query, $values = NULL, int $fetchType = self::FETCH_NONE);
public function buildCondition($condition, &$params) {