Чтение онлайн

на главную - закладки

Жанры

Разрботка расширений для CMS Joomla
Шрифт:

где $query - это запрос, а $offset и $limit - соответственно смещение для начала выборки и количество выбираемых строк.

Например:

$db->setQuery($query, 0, 10);

Обратите внимание, что метод setQuery не выполняет запрос, а только задает его.

Выполнение запроса

Без выборки данных

Для выполнения запроса, не требующего выборки данных (например, UPDATE или INSERT), используется метод mixed query.

При успешном выполнении запроса метод возвращает указатель на его результат, в противном случае - false.

Например:

$db =& JFactory::getDBO; $query = "UPDATE #__users SET block = 0 WHERE username LIKE 'a%'"; $db->setQuery($query); $result = $db->query;

С выборкой данных

В классе JDatabase существуют методы для получения форматированного результата. Их можно разделить на следующие группы:

Получение одного значения: 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 "<br>"; }

В результате на экран будет выведено:

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]=>*)

Поделиться:
Популярные книги

Метатель

Тарасов Ник
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель

Магия чистых душ

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Магия чистых душ

Барон Дубов

Карелин Сергей Витальевич
1. Его Дубейшество
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Барон Дубов

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Барон диктует правила

Ренгач Евгений
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон диктует правила

Попытка возврата. Тетралогия

Конюшевский Владислав Николаевич
Попытка возврата
Фантастика:
альтернативная история
9.26
рейтинг книги
Попытка возврата. Тетралогия

Долгий путь домой

Русич Антон
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
6.20
рейтинг книги
Долгий путь домой

Гардемарин Ее Величества. Инкарнация

Уленгов Юрий
1. Гардемарин ее величества
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
фантастика: прочее
5.00
рейтинг книги
Гардемарин Ее Величества. Инкарнация

Завод-3: назад в СССР

Гуров Валерий Александрович
3. Завод
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Завод-3: назад в СССР

Решала

Иванов Дмитрий
10. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Решала

Камень. Книга пятая

Минин Станислав
5. Камень
Фантастика:
боевая фантастика
6.43
рейтинг книги
Камень. Книга пятая

Отдельный танковый

Берг Александр Анатольевич
1. Антиблицкриг
Фантастика:
боевая фантастика
альтернативная история
5.00
рейтинг книги
Отдельный танковый

Метатель. Книга 3

Тарасов Ник
3. Метатель
Фантастика:
попаданцы
альтернативная история
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель. Книга 3

Боярышня Евдокия

Меллер Юлия Викторовна
3. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Евдокия