Browse Source

fetchPairs method

git-svn-id: svn+ssh://code.netmonsters.ru/svn/majestic/trunk@86 4cb57b5f-5bbd-dd11-951b-001d605cbbc5
master
pzinovkin 16 years ago
parent
commit
f68625500a
  1. 48
      classes/DBConnector.class.php
  2. 22
      classes/Model.class.php

48
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();
@ -78,6 +87,45 @@ 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);

22
classes/Model.class.php

@ -183,6 +183,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()
{
return DBConnector::numRows($this->result);

Loading…
Cancel
Save