Блог о заработке, seo, joomla и не только...
Здравствуйте дорогие читатели! Сегодня поговорим о прямых запросов запросов в базу данных Joomla с помощью JDatabase.
Давайте рассмотрим всё по порядку.
Главное при работе с базой данных Joomla это безопасность, от случайных данных нужно предохранятся. Таким средством является метод getEscaped();
$_REQUEST["text"] = "Всевозоможные апострофы - (') нужно обязательно экранировать ";
$mytext = JRequest::getVar('text','');
$db =& JFactory::getDBO();
$mytext = $db->getEscaped($mytext);
echo $mytext;
Все мы люди ошибаемся. От ошибок не застрахован никто, поэтому полезно посмотреть что возвращает запрос. Для этого не обязательно через phpmyadmin.
$db =& JFactory::getDBO();
$zapros = "SELECT * FROM #__content LIMIT 8";
$db->setQuery($zapros);
$db->explain();
Как можно узнать что сервер mysql не упал и соединение с ним работает?
$db =& JFactory::getDBO();
if ($db->connected()) {
echo "Нет соединения с сервером баз данных";
jexit();
} else {
echo "Все отлично с базой данных";
}
Полезно, когда нужно получить данные из базы данных, отличной от текущей. Однако нужно заметить, чтобы этот метод был выполнен успешно, нужно, чтобы пользователь mysql установленный в настройках самой Joomla имел право работать с обеими базами данных.
$db =& JFactory::getDBO();
$database_name = "db2";
if ($db->select($database_name)) {
//Тут делаем запросы к другой базе данных
}
Следующий запрос показывает сколько строк было задействовано в ходе выполнения запроса.
//1. Создадим экземпляр класса
$db=&JFactory::getDBO();
//2. Создадим запрос к базе данных, в данном случае мы выбираем статьи
$sql = 'SELECT id,title FROM jos_content ORDER BY id ASC ';
//3. Установим этот запрос в экземпляр класса работы с базами данных
$db->setQuery($sql);
//4. Выполним запрос
$db->query();
//5. Посмотрим сколько было задействовано строчекк
echo $db->getAffectedRows ();
В основном следующая конструкция используется при установке или удалении данных о компоненте в базе данных
//1. Создадим экземпляр класса
$db =& JFactory::getDBO();
$sql = "";
//2. Создадим запросы к базе данных
for ($i=0;$i<10;$i++){
$sql .=" INSERT INTO `jos_content` (`title`, `introtext`) VALUES ('Тест$i', 'test$i') ; ";
}
//3. Установим этот запрос в экземпляр класса работы с базами данных
$db->setQuery($sql);
//4. Для того чтобы выполнить эти запросы будем использовать следующую конструкцию
$db->queryBatch();