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

Опубликовано: 01.09.2018

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

Excel для начинающих. Урок 10: Базы данных: быстрый набор

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

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



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

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


Как в Excel сделать Работа с базами данных

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

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

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

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


Создание сайта | Урок #15 - Создание БД и подключение к ней

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

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

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

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

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

< ?php $db=&amp;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 =& amp ; JFactory :: getUser ( ) ; // пользователь с заданным идентификатором $user62 =& amp ; 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' ) ; } ?>

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

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

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

< ?php //Экземпляр класса $db=&amp;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 читайте здесь.

Понравилась запись? Подпишитесь на обновления по почте:

Facebook

Читайте похожие статьи

rss