Работа с Базой Данных в Joomla 1.0. Различные методы

В Joomla 1.0 для работы с базой данных используется переменная $database. Исходники класса database лежат в /includes/database.php.

Обычно работа с Базой Данной состоит из двух этапов.

  1. Использование метода SetQuery, который берёт строку SQL запроса для дальнейшего её вычисления.
  2. Использование другого метода (например, loadResult) для выполнения запроса и возвращения его результа.

Небольшой пример из /includes/content.php (Получаем имя пользователя по его id):

Перейдём к описанию некоторых методов с примерами.

 

SetQuery — самый первый вызываемый метод. берёт строку SQL запроса для дальнейшего её вычисления.

Синтаксис:

$query — строка SQL запроса.
$offset — Смещение для начала выбора. $limit — число запросов, которые нужно вернуть. Эти параметры аналогичны LIMIT [offset], rows в SQL. И означают что нужно вернуть только rows запросов (строк) начиная с позиции offset. Это используется, например, для постраничного вывода материалов.

Например, setQuery("SELECT name FROM $__users",5,10)  вернёт 10 имён пользователей начиная с 5-го.

loadResult — возвращает первое поле первой строки запроса или false, если запрос неудачен. Используется, кода нам нужно получить только один результат.

Синтаксис:

Пример приведён выше.

loadRow — возвращает первую строку запроса в виде массива или false, если запрос неудачен.

Синтаксис:

Пример:

Другой пример.

loadObjectList — возвращает массив, состоящий из строк таблицы (точнее — каждый элемент массива — экземпляр stdClass, поля которого совпадают с названиями полей в таблице)

Синтаксис:

Пример:

loadResultArray  — Возвращает массив, каждый элемент которого — одно поле. Используется при выборе одной колонки.

Синтаксис:

$num_in_array — числовой offset поля строки базы данных.Пример:

Пример с использованием $num_in_array (выдаст массив имён пользователей)

query — выполняет запрос. Используется, например, для запросов DELETE или UPDATE, где не надо выдавать результат. Возвращает database resource object если успешно, null — если нет.

Синтаксис:

Пример (удаляем пользователя с id=5)

После выполнения запроса можно получить информацию о том, как он был выполнен — успешно ли, сколько строк затронул. Если не успешно —  можно получить сообщение об ошибке. Для этого используются следующие методы

getErrorNum — возвращает номер ошибки при последнем запросе к базе данных

getErrorMsg — возвращает описание ошибки

stderr — выдаёт сообщение о ошибке в стандартном формате. Оно включает в себя и номер ошибки, и её описание

Синтаксис:

$showSQL — показывать ли SQL.

getNumRows — возвращает число строк, возвращённое предыдущим запросом к базе данных. Или, если указан $resource — запросом, с указанным ресурсом

Синтаксис:

$resource — database resource object. См. query();

Пример (число пользователей зарегестрированных на сайте — конечно, лучше использовать запрос SELECT count(*) FROM #__users):

getAffectedRows — возвраает число строк, которые были затронуты последним запросом. Например, SELECT, INSERT, UPDATE или DELETE.insertid — возвращает ID значение сгенерированное полем c AUTO_INCREMENT . Метод возвращает 0 если предыдущий запрос не сгенерировал AUTO_INCREMENT значение.

 

Безопасность при работе с базой данных.

Более подробно тут. Если кратко, то нужно обязательно следовать двум правилам:

1) все подставляемые в SQL-запрос выражения должны быть в кавычках, например в одинарных

 

 

2) использовать mosGetParam() для получения переменных, используемых в запросе. (mosGetParam автоматически применяет функцию addslashes, если это нужно)

 

 

Работа с Базой Данных в Joomla 1.0. Различные методы: 2 комментария

  1. Здравствуйте.
    Скажите, где искать официальные описания этих функций? Это функции придуманные и прописанные в php файлах Джумлы?

Обсуждение закрыто.