Работаем с базой данных (БД) на Joomla 1.5.x
1. Как безопасно вставить данные в Joomla 1.5.x
Любые изменения в базе данных любого CMS требуют безопасного подхода, поэтому для предохранения от проникновения в БД случайных данных используется способ getEscaped(); . Код приведен ниже:
1 2 3 4 5 6 7 | < ?php $_REQUEST["sometext"]="Соблюдайте безопасность работы, экранируйте различные апострофы - (') "; $mytext=JRequest::getVar('sometext',''); $db=&JFactory::getDBO(); $mytext=$db->getEscaped($mytext); echo $mytext; ?> |
2. Как установить данные в текущую базу данных
Если вам необходимо получить данные из базы данных, которая отличается от текущей БД, то следует применять следующий код:
1 2 3 4 5 6 | < ?php $db=&JFactory::getDBO(); $database_name="db2"; if ($db->select($database_name)) { //запрос к сторонней БД} ?> |
Однако учтите, что для успешного выполнения этого запроса необходим доступ пользователя mysql и к текущей базе данных, и к той, которая будет использоваться. Доступ устанавливается в настройках Joomla.
3. Как отладить и проверить текущий запрос
Иногда возникает необходимость проверки текущего запроса – что он вам возвращает. В случае обнаружения ошибки его нужно отладить, и сделать это, не прибегая к PhpAdmin, а при помощи следующего метода:
1 2 3 4 5 6 | < ?php $db=&JFactory::getDBO(); $q="SELECT * FROM #__content LIMIT 5"; $db->setQuery($q); $db->explain(); ?> |
При возникновении каких-либо неполадок с соединением прежде всего нужно проверить связь с сервером mysql. Это необходимо, если вы хотите внести изменения в БД, но по неизвестным причинам соединение не работает. Для проверки соединения войти в PhpAdmin не получится, поэтому нужно применить такой метод проверки:
1 2 3 4 5 6 7 8 9 | < ?php $db=&JFactory::getDBO(); if ($db->connected()) { echo "Нет соединения с сервером БД"; die(); } else { echo "Все в порядке, соединение есть!"; } ?> |
4. Как получить данные о пользователе
Работа с записями пользователей требует больших временных затрат. Для работы с пользователями с целью упрощения процесса можно назначить пользователям группы, так как не все приходящие пользователи есть целевые. Для определения группы используется идентификатор группы, и отсюда, из этой таблицы, можно получить все данные о пользователе:
Идентификатор группы |
Имя группы |
2 |
Зарегистрированные пользователи |
3 |
Автор |
4 |
Редактор |
5 |
Участник |
6 |
Менеджер |
7 |
Администратор |
8 |
Суперадминистратор |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | < ?php //текущий пользователь $current_user =& JFactory::getUser(); // пользователь с заданным идентификатором $user62=& JFactory::getUser(23); //получаем группу текущего пользователя и пользователя с ID=23 echo "Идентификатор группы текущего пользователя:".$user->get( 'gid' ); echo "<br />Идентификатор группы пользователя с ИД=23:".$user62->get('gid' ); // обратитесь для получения информации о регистрации пользователя if ($user->get( 'guest' )) { echo "<br />Гость"; }else { echo "<br />Пользователь зарегистрирован"; //Дата последнего захода на сайт echo "<br />Дата последнего визита:".$user->get('lastvisitDate'); //Дата регистрации echo "<br />Дата регистрации:".$user->get('registerDate'); //Имя пользователя/никнейм echo "<br />Имя пользователя/никнейм:".$user->get('name'). "/".$user->get('username'); //Узнать идентификационный номер пользователя echo "<br />ID пользователя:".$user->get('id'); //Тип пользователя echo "<br />Тип пользователя:".$user->get('usertype'); //Электронный адрес пользователя echo "<br />email пользователя:".$user->get('email'); //Узнать MD5 хеш пароля echo "<br />MD5 хеш пароля:".$user->get('password'); } ?> |
5. Несложная функция, которая показывает, сколько было обработано строк при последнем запросе:
1 2 3 4 5 6 7 8 9 10 11 12 | < ?php //Создание экземпляра класса $db=&JFactory::getDBO(); // Создание запроса к БД $q='SELECT id,title FROM jos_content ORDER BY id ASC '; // Установка запроса в экземпляр класса работы с БД $db->setQuery($q); //Выполнение запроса $db->query(); //Результат, то есть – количество обработанных строк echo $db->getAffectedRows (); ?> |
6. Как выполнить сразу несколько запросов
В основном этот метод используется для удаления или установки какого-либо компонента в БД, требующего множественные запросы:
1 2 3 4 5 6 7 8 9 10 11 12 13 | < ?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
1 2 3 4 5 6 7 8 9 10 11 12 13 | < ?php //Экземпляр класса $db=&JFactory::getDBO(); //Запрос к БД $q=" INSERT INTO `jos_content` (`title`, `introtext`) VALUES ('Тест', 'test') "; // Установка запроса в экземпляр класса работы с БД $db->setQuery($q); //Выполнение запроса if(!$db->query()){ // Вывод ошибки, если запрос не выполняется echo __LINE__.$db->stderr(); } ?> |
После выполнения такого запроса в менеджере статей отобразится эта статья:
Продолжение статьи о работе с базой данных Joomla 1.5.x читайте здесь.
Оцените статью по 5-бальной шкале: