Получение одного значения: loadResult.
Получение одной строки таблицы: loadRow, loadAssoc, loadObject.
Получение одного столбца таблицы: loadResultArray.
Получение нескольких строк и нескольких столбцов: loadRowList, loadAssocList, loadObjectList.
Рассмотрим каждый из этих методов на примере таблицы #__categories, использующейся Joomla (таблица 2.1).
Таблица 2.1. Таблица #__categories id asset_id parent_id lft rgt level path extension … language1 0 0 0 11 0 system … * 2 27 1 1 2 1 uncategorised com_content … * 3 28 1 3 4 1 uncategorised com_banners … * 4 29 1 5 6 1 uncategorised com_contact … * 5 30 1 7 8 1 uncategorised com_newsfeeds … * 6 31 1 9 10 1 uncategorised com_weblinks … *
mixed loadResult
Метод загружает значение первого столбца первой строки результирующей выборки. Используется для получения из базы данных какого-либо одного значения. При ошибке выполнения запроса метод вернет null, как и все рассмотренные ниже методы выборки данных.
Например, получим значение поля name в записи под номером 2:
$db =& JFactory::getDbo; $query = 'SELECT '.$db->nameQuote('extension'). ' FROM '.$db->nameQuote('#__categories'). ' WHERE '.$db->nameQuote('id').'='.$db->Quote('2'); $db->setQuery($query); echo $db->loadResult;
Результатом выполнения данного запроса будет значение "com_content".
array loadRow
Загружает первую строку результирующей выборки в виде массива. Если запрос возвращает больше одной строки, то метод вернет первую из них.
$db =& JFactory::getDbo; $query = 'SELECT * FROM '.$db->nameQuote('#__categories'); $db->setQuery($query); print_r($db->loadRow);
Результатом запроса будет следующий список (будем называть списком массив, индексами которого являются числа 0, 1, 2 и т.д.):
Array([0]=>1 [1]=>0 [2]=>0 [3]=>0 [4]=>11 [5]=>0 [6]=> [7]=>system [8]=>ROOT [9]=>root [10]=> [11]=> [12]=>1 [13]=>0 [14]=>0000-00-00 00:00:00 [15]=>1 [16]=>{} [17]=> [18]=> [19]=> [20]=>0 [21]=>2009-10-18 16:07:09 [22]=>0 [23]=>0000-00-00 00:00:00 [24]=>0 [25]=>*)
array loadAssoc
Метод загружает первую строку результирующей выборки в виде ассоциативного массива, ключами которого становятся названия полей таблицы. Если запрос возвращает больше одной строки, то метод вернет первую из них.
$db =& JFactory::getDbo; $query = 'SELECT * FROM '.$db->nameQuote('#__categories'); $db->setQuery($query); print_r($db->loadAssoc);
Результат запроса:
Array([id]=>1 [asset_id]=>0 [parent_id]=>0 [lft]=>0 [rgt]=>11 [level]=>0 [path]=> [extension]= >system [title]=>ROOT [alias]=>root [note]=> [description]=> [published]=>1 [checked_out]=>0 [checked_out_time]=>0000-00-00 00:00:00 [access]= >1 [params]=>{} [metadesc]=> [metakey]=> [metadata]=> [created_user_id]=>0 [created_time]=>2009-10-18 16:07:09 [modified_user_id]= >0 [modified_time]=>0000-00-00 00:00:00 [hits]=>0 [language]=>*)
object loadObject
Метод загружает первую строку результирующей выборки в виде объекта класса stdClass, причем его полями становятся названия полей таблицы. Если запрос возвращает больше одной строки, то метод вернет первую из них.
$db =& JFactory::getDbo; $query = 'SELECT * FROM '.$db->nameQuote('#__categories'); $db->setQuery($query); print_r($db->loadObject);
Результат запроса:
stdClass Object([id]=>1 [asset_id]=>0 [parent_id]=>0 [lft]=>0 [rgt]=>11 [level]= >0 [path]=> [extension]=>system [title]=>ROOT [alias]=>root [note]=> [description]=> [published]=>1 [checked_out]=>0 [checked_out_time]=>0000-00-00 00:00:00 [access]= >1 [params]=>{} [metadesc]=> [metakey]=> [metadata]=> [created_user_id]=>0 [created_time]=>2009-10-18 16:07:09 [modified_user_id]=>0 [modified_time]= >0000-00-00 00:00:00 [hits]=>0 [language]=>*)
array loadResultArray(int numinarray=0)
Метод загружает массив значений из результирующей выборки, полученных из одного столбца. Параметр numinarray используется для указания того, какой столбец нужно вернуть.
$db =& JFactory::getDbo; $query = 'SELECT '.$db->nameQuote('extension'). ' FROM '.$db->nameQuote('#__categories'); $db->setQuery($query); print_r($db->loadResultArray);
Результатом будет следующий список:
Array([0]=>com_banners [1]=>com_contact [2]=>com_content [3]=>com_newsfeeds [4]=>com_weblinks [5]=>system)
Данный метод позволяет перебирать в цикле столбцы таблицы:
$db =& JFactory::getDbo; $query = 'SELECT '.$db->nameQuote('path').','.$db->nameQuote('extension').','.$db->nameQuote('language'). ' FROM '.$db->nameQuote('#__categories'); $db->setQuery($query); for ($i = 0; $i <= 2; $i++) { $column = $db->loadResultArray($i); print_r($column); echo "
"; }
В результате на экран будет выведено:
Array([0]=> [1]=>uncategorised [2]=>uncategorised [3]= >uncategorised [4]=>uncategorised [5]=>uncategorised) Array([0]=>system [1]=>com_content [2]=>com_banners [3]= >com_contact [4]=>com_newsfeeds [5]=>com_weblinks) Array([0]=>* [1]=>* [2]=>* [3]=>* [4]=>* [5]=>*)
array loadRowList(int key)