From f68625500adcb6da1ba4136e98c4fb75329bdf97 Mon Sep 17 00:00:00 2001 From: pzinovkin Date: Tue, 5 May 2009 11:44:06 +0000 Subject: [PATCH] fetchPairs method git-svn-id: svn+ssh://code.netmonsters.ru/svn/majestic/trunk@86 4cb57b5f-5bbd-dd11-951b-001d605cbbc5 --- classes/DBConnector.class.php | 48 +++++++++++++++++++++++++++++++++++++++++++ classes/Model.class.php | 22 ++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/classes/DBConnector.class.php b/classes/DBConnector.class.php index c26f3e8..826283b 100644 --- a/classes/DBConnector.class.php +++ b/classes/DBConnector.class.php @@ -13,6 +13,15 @@ */ class DBConnector { + + /** + * PDO constant values. + */ + const FETCH_ASSOC = 2; + const FETCH_BOTH = 4; + const FETCH_NUM = 3; + const FETCH_OBJ = 5; + static private $handlers = array(); static public $queries = array(); @@ -77,7 +86,46 @@ class DBConnector { return $class_name ? mysqli_fetch_object($result, $class_name) : mysqli_fetch_object($result); } + + /** + * Fetches a row from the result set. + * + * @param mysqli_result $result + * @param int $style OPTIONAL Fetch mode for this fetch operation. + * @return mixed Array, object, or scalar depending on fetch mode. + * @throws Exception + */ + static public function fetchArray($result, $style = null) + { + if (!$result) { + return false; + } + if ($style === null) { + $style = self::FETCH_ASSOC; + } + + $row = false; + switch ($style) { + case self::FETCH_NUM: + $row = mysqli_fetch_array($result, MYSQLI_NUM); + break; + case self::FETCH_ASSOC: + $row = mysqli_fetch_array($result, MYSQLI_ASSOC); + break; + case self::FETCH_BOTH: + $row = mysqli_fetch_array($result, MYSQLI_BOTH); + break; + case self::FETCH_OBJ: + $row = mysqli_fetch_object($result, MYSQLI_BOTH); + break; + default: + throw new Exception('Invalid fetch mode "' . $style . '" specified'); + break; + } + return $row; + } + static public function numRows($result) { return mysqli_num_rows($result); diff --git a/classes/Model.class.php b/classes/Model.class.php index eabd935..e707e48 100644 --- a/classes/Model.class.php +++ b/classes/Model.class.php @@ -182,6 +182,28 @@ class ModelSelectResult extends ModelResult } return $array; } + + /** + * Fetches all SQL result rows as an array of key-value pairs. + * + * The first column is the key, the second column is the + * value. + * + * @return array + */ + public function fetchPairs() + { + if (!method_exists('DBConnector', 'fetchArray')) { + throw new Exception('Method not implemented yet.'); + } + + $data = array(); + while ($row = DBConnector::fetchArray($this->result, DBConnector::FETCH_NUM)) { + $data[$row[0]] = $row[1]; + } + return $data; + } + function count() {