RSS   Twitter   Copiny   Copiny
Нашел ошибку? 

Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!

Выполнение запросов к базе данных

Из всего разнообразия методов класса JDatabase самым основным является query(). Он выполняет запросы напрямую в базу данных, без дополнительных вмешательств со стороны Joomla.

Обычная функция PHP mysql_query обычно вернет ссылку на ресурс, который потом с помощью нескольких действий можно преобразовать в нормальный ответ в виде ассоциативного массива. Метод query(), в отличие от функций PHP, вернет булево значение, по которому можно понять выполнился запрос или нет. Обычно его используют в следующих типах запросов:

  • DELETE
  • INSERT
  • RENAME
  • REPLACE
  • UPDATE

Хотя никто не запрещает писать там что-нибудь и посложнее. Разберем выше сказанное на практике. Попробуем к примеру выполнить запрос, который удаляет из таблицы «#__mycomponent_foobars» все записи, где ordering больше 4.



// берем ссылку на объект базы данных
$db =& JFactory::getDBO();
 
// подготовка имен
$tableName  = $db->nameQuote('#__mycomponent_foobars');
$columnName = $db->nameQuote('ordering');
 
// строим SQL
$sql = "DELETE FROM $tableName WHERE $columnName > 4 ";
 
// предварительно устанавливаем текст запроса 
$db->setQuery($sql);
 
// выполняем запрос и в зависимости от ответа выполняем соответствующее действие
if ($db->query()) {
    // успешно выполнился
} else {
    // неудача (например, ошибка в синтаксисе SQL)
}

Так, как в случае неудачи мы получим FALSE, то после проверки запроса можно сделать вывод ошибок, например в log-файл.

Очень полезным может оказаться метод JDatabase::getAffectedRows(), который вернет количество строк, к которым был применен последний запрос. Используется следующим образом:


// в случае успеха
$affectRowCount = $db->getAffectedRows();
 
// выводим сообщение
echo JText::sprintf('DELETED %u RECORDS', $affectRowCount);

Смотрите также:
Комментарии (1) Добавить комментарий
  • Сергей
    Сергей
    03 Ноября 2012, 19:33
     ↑  0  ↓     ответ

    т.е получается что по ссылке запустится модуль, а модуль снова вернет нас к ссылке?

Оставить комментарий




* обязательно для заполнения

1 введенный почтовый адрес используется только для обратной связи при ответах в комментариях и сервиса gravatar.com
.