Рассмотрим пример как joomla взаимодействует с базой данных и что при этом используется!
1. Создается объект который полностью оснащен всеми нужными нам функциями для работы с базой данных и имя ему JFactory::getDBO (пример $db = JFactory::getDBO;);
2. Формируется SQL запрос (обычно это делают в переменной, пример: $query = "SELECT * FROM #__content");
3. Делаем запрос в базу данных при помощи спец. функции которую вкл. наш объект - setQuery() (пример: $db->setQuery($query));
4. Выгружаем результат работы запроса при помощи спец. функций: loadResult(), loadAssoc(), loadAssocList(), loadObject(), loadObjectList(), getNumRows();
Подробнее про эти функции:
- $db->loadResult() - возвращает строку
Пример работы:
$db = JFactory::getDBO;
$query = "SELECT title FROM #__content WHERE id='1'";
$db->setQuery($query);
$result = $db->loadResult();
echo $result;
- $db->loadAssoc() - возвращает первую запись таблици в виде ассоциативного масива, к элементам массива можно обращаться просто как к в обычном массиве то есть $array['key'], где key - это ключ элемента массива. К слову, существует удобный плагин для браузера "Опера" он предназначен для разработчиков приложений и в нем можно быстро протестировать любой SQL запрос, а Опера на русском живёт здесь.
Пример работы:
$db = JFactory::getDBO;
$query = "SELECT * FROM #__content";
$db->setQuery($query);
$result = $db->loadAssoc();
var_dump($result);
echo $result['id'];
- $db->loadAssocList() - возвращает все записи в таблице в виде массива ассоциативных масива.
Пример работы:
$db = JFactory::getDBO;
$query = "SELECT * FROM #__content";
$db->setQuery($query);
$result = $db->loadAssocList();
var_dump($result);
$result_1 = $result[0];
echo $result_1['id'];
- $db->loadObject() - возвращает первую запись в таблице в виде объекта, к элементам объекта можно обратиться таким способом $result->key, где key - это ключ элемента.
Пример работы:
$db = JFactory::getDBO;
$query = "SELECT * FROM #__content";
$db->setQuery($query);
$result = $db->loadObject();
var_dump($result);
echo $result->id;
- $db->loadObject() - возвращает первую запись в таблице в виде объекта, к элементам объекта можно обратиться таким способом $result->key, где key - это ключ элемента.
Пример работы:
$db = JFactory::getDBO;
$query = "SELECT * FROM #__content";
$db->setQuery($query);
$result = $db->loadObject();
var_dump($result);
echo $result->id;
- $db->loadObjectList() - возвращает все записи в таблице в виде массива с объектами.
Пример работы:
$db = JFactory::getDBO;
$query = "SELECT * FROM #__content";
$db->setQuery($query);
$result = $db->loadObjectList();
$result_1 = $result[0];
echo $result_1->id;
- $db->getNumRows() - возвращает количество записей в таблице при выполнение запроса выборки SELECT.
Пример работы:
$db = JFactory::getDBO;
$query = "SELECT * FROM #__content";
$db->setQuery($query);
$result = $db->loadObjectList();
echo $result;
Комментарии
Спасибо!
Да звездец комик, 2 раза бы перенести ручками успел бы =)
То есть не могу вывести данные из базы на страницу сайта.
Вот код скрипта:
А на странице сайта получаю вот такой ответ:
setQuery($ww); $result = $db->loadObjectList( ); echo $result; ?>
Что не так?
$db = JFactory::getDB O();
$query = SELECT * FROM 'bak_mat_users';
$db->setQuery($query );
$result = $db->loadObjectList( );
echo $result;
setQuery($query ); $result = $db->loadObjectList( ); echo $result; ?>
Что не так?