From 40444c1341f563a968b60717ee29a9635e0db213 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Mon, 12 Nov 2007 16:20:44 +0000 Subject: [PATCH] * added dibi::fetch, dibi::fetchAll, dibi::fetchSingle * some bugs fixed --- dibi/dibi.php | 48 ++++++++++++++++++++++++++++++++++++++++++ dibi/drivers/odbc.php | 2 +- dibi/drivers/pdo.php | 12 +++-------- examples/fetch.php | 13 ++++++++---- examples/sample.mdb | Bin 106496 -> 188416 bytes 5 files changed, 61 insertions(+), 14 deletions(-) diff --git a/dibi/dibi.php b/dibi/dibi.php index fa0887cb..ddb1507f 100644 --- a/dibi/dibi.php +++ b/dibi/dibi.php @@ -260,6 +260,54 @@ class dibi extends NClass + /** + * Executes SQL query and fetch result - Monostate for DibiConnection::query() & fetch() + * + * @param array|mixed one or more arguments + * @return array + * @throws DibiException + */ + public static function fetch($args) + { + if (!is_array($args)) $args = func_get_args(); + + return self::getConnection()->query($args)->fetch(); + } + + + + /** + * Executes SQL query and fetch results - Monostate for DibiConnection::query() & fetchAll() + * + * @param array|mixed one or more arguments + * @return array + * @throws DibiException + */ + public static function fetchAll($args) + { + if (!is_array($args)) $args = func_get_args(); + + return self::getConnection()->query($args)->fetchAll(); + } + + + + /** + * Executes SQL query and fetch first column - Monostate for DibiConnection::query() & fetchSingle() + * + * @param array|mixed one or more arguments + * @return string + * @throws DibiException + */ + public static function fetchSingle($args) + { + if (!is_array($args)) $args = func_get_args(); + + return self::getConnection()->query($args)->fetchSingle(); + } + + + /** * Retrieves the ID generated for an AUTO_INCREMENT column by the previous INSERT query * Monostate for DibiConnection::insertId() diff --git a/dibi/drivers/odbc.php b/dibi/drivers/odbc.php index 17d18581..bef822b4 100644 --- a/dibi/drivers/odbc.php +++ b/dibi/drivers/odbc.php @@ -250,7 +250,7 @@ class DibiOdbcDriver extends NObject implements DibiDriverInterface */ public function fetch() { - return odbc_fetch_array($this->resultset, $this->row++); + return odbc_fetch_array($this->resultset, ++$this->row); } diff --git a/dibi/drivers/pdo.php b/dibi/drivers/pdo.php index 058fbaa1..e9f869ab 100644 --- a/dibi/drivers/pdo.php +++ b/dibi/drivers/pdo.php @@ -49,12 +49,6 @@ class DibiPdoDriver extends NObject implements DibiDriverInterface private $resultset; - /** - * Cursor - * @var int - */ - private $row = 0; - /** * Connects to a database @@ -204,7 +198,7 @@ class DibiPdoDriver extends NObject implements DibiDriverInterface */ public function rowCount() { - return $this->resultset->rowCount(); + throw new DibiDatabaseException('Row count is not available for unbuffered queries'); } @@ -217,7 +211,7 @@ class DibiPdoDriver extends NObject implements DibiDriverInterface */ public function fetch() { - return $this->resultset->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT, $this->row++); + return $this->resultset->fetch(PDO::FETCH_ASSOC); } @@ -231,7 +225,7 @@ class DibiPdoDriver extends NObject implements DibiDriverInterface */ public function seek($row) { - $this->row = $row; + throw new DibiDatabaseException('Cannot seek an unbuffered result set'); } diff --git a/examples/fetch.php b/examples/fetch.php index 8a91d8a1..5d2412c5 100644 --- a/examples/fetch.php +++ b/examples/fetch.php @@ -23,21 +23,26 @@ product_id | title */ +// fetch a single row +$row = dibi::fetch('SELECT title FROM [products]'); +print_r($row); // Chair +echo '
'; + + // fetch a single value -$res = dibi::query('SELECT [title] FROM [products]'); -$value = $res->fetchSingle(); +$value = dibi::fetchSingle('SELECT [title] FROM [products]'); print_r($value); // Chair echo '
'; // fetch complete result set -$res = dibi::query('SELECT * FROM [products]'); -$all = $res->fetchAll(); +$all = dibi::fetchAll('SELECT * FROM [products]'); print_r($all); echo '
'; // fetch complete result set like association array +$res = dibi::query('SELECT * FROM [products]'); $assoc = $res->fetchAssoc('title'); // key print_r($assoc); echo '
'; diff --git a/examples/sample.mdb b/examples/sample.mdb index aea2ca121d8af5ff7bf0d247675730b79c340a49..dd1e6860d63a9d47b46950b98927d43d6373ff62 100644 GIT binary patch literal 188416 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