Goldensites | CMS Joomla | Joomla 1.5 | Статьи Joomla | Использование классов для работы с базой данных в ваших скриптах Joomla!

Использование классов для работы с базой данных в ваших скриптах Joomla!

Благодаря использованию встроенного класса, Вам будет достаточно пару строк, чтобы получить результат из БД в различных видах. Такой подход обеспечит максимальную совместимость и гибкость для разрабатываемого сайта Joomla!
Для начала Вам будет необходимо создать экземляр объекта класса для работы с базой данных в Joomla! Что касается запроса - вы можете использовать стандартный синтаксис SQL. Единственное, что вам нужно изменить - префикс таблиц. Чтобы сделать ваш запрос SQL наиболее гибким, используйте маску "jos_", при следующем шаге $db->setQuery(); эта строка заменится правильным префиксом.

<?php
//получаем объект БД
<strong>$db =& JFactory::getDBO();</strong>
//ваш запрос
$query = "SELECT * FROM jos_example_table WHERE id = 999999;";
$db->setQuery($query);

Для обеспечения максимальной совместимости необходимо для имен полей использовать метод $db->nameQuote($name), а для значений $db->Quote($value)
<?php
$query = "
 SELECT * 
 FROM ".$db->nameQuote('jos_example_table')."  
 WHERE ".$db->nameQuote('id')." = ".$db->quote('999999').";

Конечно вы можете поместить свой SQL запрос непосредственно в функцию $db->setQuery(), но для получения наиболее читабельного кода советуем вам сначало присвоить запрос переменной (обычно это $query), а затем переменную вставлять в $db->setQuery($query). Метод setQuery($query) создает запрос к БД для последующего его выполнения либо для получения результата.
Метод setQuery() принимает 3 необязательных параметра:
$offset - указывает смещение
$limit - устанавлмвает лимит затронутых записей (может использоваться для пагинации в Joomla!)
$prefix - префикс таблицы БД Joomla!

Выполнение запроса
Чтобы выполнить запрос Joomla распологает несколькими функциями, которые отличаются по их возвращаемому значению.

query()
Этот метод является основным в Joomla для выполнения SQL-запроса к базе данных. Этот метод используется при разработке расширений Joomla для
администрирования БД, т.е. создания, удаления и редактирования записей и таблиц. Синтаксис метода query() очень прост:
<?php
$db =& JFactory::getDBO();
$query = "/* some valid sql string */";
$db->setQuery($query);
$result = $db->query();

В случае успеха метод возвращает результат, в противном случае FALSE.

loadResult()
Использовать loadResult() при работе с БД в Joomla нужно только в том случае, если вы ожитаете единственное значение в результате запроса.
таблица1

Часто он используется для выяснения количества записей:
<?php
$db =& JFactory::getDBO();
$query = "
 SELECT COUNT(*)
 FROM ".$db->nameQuote('jos_my_table')."
 WHERE ".$db->nameQuote('name')." = ".$db->quote($value).";
 ";
$db->setQuery($query);
$count = $db->loadResult();

Или если необходимо вернуть единственное поле:
<?php
$db =& JFactory::getDBO();
$query = "
 SELECT ".$db->nameQuote('field_name')."
 FROM ".$db->nameQuote('jos_my_table')."
 WHERE ".$db->nameQuote('some_name')." = ".$db->quote($some_value).";
 ";
$db->setQuery($query);
$result = $db->loadResult();
продолжение следует...

Комментарии 

 
0 #1 Uwe 06.02.2023 14:03
I want to to thank you for this great read!! I certainly enjoyed every bit of it.
I've got you book marked to check out new things you post…

Feel free to visit my blog; Накрутка комнаты яппи: https://nakrutka-komnat-yappy.ru/
Цитировать