Работаем с базой данных (БД) на Joomla 1.5.x

Категории: Joomla

1. Как безопасно вставить данные в Joomla 1.5.x

Любые изменения в базе данных любого CMS требуют безопасного подхода, поэтому для предохранения от проникновения в БД случайных данных используется способ getEscaped(); . Код приведен ниже:

< ?php
 $_REQUEST["sometext"]="Соблюдайте безопасность работы, экранируйте различные  апострофы - (')   ";
 $mytext=JRequest::getVar('sometext','');
 $db=&JFactory::getDBO();
 $mytext=$db->getEscaped($mytext);
 echo $mytext;
?>

2. Как установить данные в текущую базу данных

Если вам необходимо получить данные из базы данных, которая отличается от текущей БД, то следует применять следующий код:

< ?php
$db=&JFactory::getDBO();
$database_name="db2";
if ($db->select($database_name)) {
 //запрос к сторонней БД}
?>

Однако учтите, что для успешного выполнения этого запроса необходим доступ пользователя mysql и к текущей базе данных, и к той, которая будет использоваться. Доступ устанавливается в настройках Joomla.

база данных joomla

3. Как отладить и проверить текущий запрос

Иногда возникает необходимость проверки текущего запроса – что он вам возвращает. В случае обнаружения ошибки его нужно отладить, и сделать это, не прибегая к PhpAdmin, а при помощи следующего метода:

< ?php
$db=&JFactory::getDBO();
$q="SELECT * FROM #__content LIMIT 5";
$db->setQuery($q);
$db->explain();
?>

При возникновении каких-либо неполадок с соединением прежде всего нужно проверить связь с сервером mysql. Это необходимо, если вы хотите внести изменения в БД, но по неизвестным причинам соединение не работает. Для проверки соединения войти в PhpAdmin не получится, поэтому нужно применить такой метод проверки:

< ?php
$db=&JFactory::getDBO();
if ($db->connected()) {
 echo "Нет соединения с сервером БД";    
die();
} else {
 echo "Все в порядке, соединение есть!";
}
?>

4. Как получить данные о пользователе

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


Идентификатор группы

Имя группы

2

Зарегистрированные пользователи

3

Автор

4

Редактор

5

Участник

6

Менеджер

7

Администратор

8

Суперадминистратор

< ?php
//текущий пользователь
$current_user =& JFactory::getUser();
// пользователь с заданным идентификатором
$user62=& JFactory::getUser(23);
//получаем группу текущего пользователя и пользователя с ID=23
echo "Идентификатор группы текущего пользователя:".$user->get( 'gid' );
echo "
Идентификатор группы пользователя с ИД=23:".$user62->get('gid' ); // обратитесь для получения информации о регистрации пользователя if ($user->get( 'guest' )) { echo "
Гость"; }else { echo "
Пользователь зарегистрирован"; //Дата последнего захода на сайт echo "
Дата последнего визита:".$user->get('lastvisitDate'); //Дата регистрации echo "
Дата регистрации:".$user->get('registerDate'); //Имя пользователя/никнейм echo "
Имя пользователя/никнейм:".$user->get('name'). "/".$user->get('username'); //Узнать идентификационный номер пользователя echo "
ID пользователя:".$user->get('id'); //Тип пользователя echo "
Тип пользователя:".$user->get('usertype'); //Электронный адрес пользователя echo "
email пользователя:".$user->get('email'); //Узнать MD5 хеш пароля echo "
MD5 хеш пароля:".$user->get('password'); } ?>

5. Несложная функция, которая показывает, сколько было обработано строк при последнем запросе:

< ?php
//Создание экземпляра класса
$db=&JFactory::getDBO();
// Создание запроса к БД
$q='SELECT id,title FROM jos_content ORDER BY id ASC  ';
// Установка запроса в экземпляр класса работы с БД
$db->setQuery($q);
//Выполнение запроса 
$db->query(); 
//Результат, то есть – количество обработанных строк
echo $db->getAffectedRows ();
?>

6. Как выполнить сразу несколько запросов

В основном этот метод используется для удаления или установки какого-либо компонента в БД, требующего множественные запросы:

< ?php
// Создание экземпляра класса 
$db=&JFactory::getDBO();
$q="";
//Создание запросов к базе данных
for ($i=0;$i<10;$i++){
$q.=" INSERT INTO `jos_content` (`title`, `introtext`) VALUES  ('Тест$i', 'test$i') ; ";
}
//Установка запроса в экземпляр класса работы с БД
$db->setQuery($q);
//Выполнение запросов к БД
$db->queryBatch();
?>

7. Выполнить запрос

Конструкция, приведенная ниже, успешно применяется для выполнения таких запросов, как DELETE, INSERT или UPDATE




< ?php
//Экземпляр класса 
$db=&JFactory::getDBO();
//Запрос к БД
$q=" INSERT INTO `jos_content` (`title`, `introtext`) VALUES  ('Тест', 'test') ";
// Установка запроса в экземпляр класса работы с БД
$db->setQuery($q);
//Выполнение запроса
if(!$db->query()){
// Вывод ошибки, если запрос не выполняется
echo __LINE__.$db->stderr();
} 
?>

После выполнения такого запроса в менеджере статей отобразится эта статья:

база данных joomla

Продолжение статьи о работе с базой данных Joomla 1.5.x читайте здесь.




Подпишитесь на рассылку блога
max1net.com: