Рязанский хостинг, регистрация доменов, бесплатный хостинг
Рязанский хостинг. (мы поможем выбрать Вам лучший и дешевый хостинг для Ваших сайтов)
Скоро на .rznhost.com
Бесплатная регистрация в каталогах

Новые виды услуг

Приём Webmoney с сайта

Биллинг панель клиента

Вход в панель хостинга
Имя пользователя:
Пароль:
 
Проверить домен
Свободен ли адрес для сайта:
.
Разделы:
Наши новости и акции

Полезные статьи

Задать вопрос








Дешевый хостинг в Рязани

В помощь
Статьи который помогут в вопросах, которые не вошли в другие разделы

Использование MySQL в PHP сценариях



материал подготовил: Константин Бажуков

Одной из причин популярности сервера баз данных MySQL, наряду с ее доступностью и производительностью, можно считать ее интеграцию с PHP. При этом производительность связки PHP, Apache и MySQL в большинстве случаев можно считать одной из самых высоких в сравнении с другими решениями. Стандартная сборка PHP почти всегда включает в себя библиотеки для работы с MySQL, предоставляя разработчикам все необходимые инструменты для взаимодействия с сервером баз данных. Функции для работы с MySQL, которые доступны при написании проектов с использованием PHP, решают главные задачи, возникающие при необходимости обращения к базе данных из сценария PHP - соединение с сервером баз данных, передача ему запроса и извлечение результатов, которые вернул сервер.

  

Перед тем как мы получим возможность работать с информацией, хранимой в базе данных, необходимо установить соединение с сервером баз данных. Для этого предназначены 2 функции PHP, почти ничем не отличающиеся по результатам действия: mysql_pconnect() и mysql_connect(). Единственное отличие этих функций заключается в том, что первая из них устанавливает постоянное соединение с сервером баз данных, которое остается открытым даже после того, как ваш сценарий будет выполнен, и его невозможно будет закрыть даже функцией mysql_close(). Когда в вашем PHP-сценарии запускается функция mysql_pconnect(), она предварительно проверит, нет ли открытого ранее постоянного соединения, и если оно есть, то открывать новое она уже не будет. Подобный подход экономит время и снимает нагрузку с сервера баз данных. Тогда для чего может понадобиться вторая функция?

Дело в том, что количество соединений с сервером баз данных, которое может существовать одновременно, ограничено, и устанавливается в конфигурации MySQL параметром max_connectors. Также количество соединений ограничено и параметром конфигурации сервера Apache MaxClients, причем необходимо следить за соответствием этих параметров, чтобы у каждого процесса Apache при необходимости было свое соединение с MySQL. С этой точки зрения вам может понадобиться в каких-либо случаях открыть соединение с базой данных, извлечь необходимые данные, а после этого освободить соединение для других процессов веб-сервера.

Первым делом необходимо установить соединение с сервером баз данных  

Помимо соединения с сервером баз данных, нам необходимо выполнить аналог команды SQL-языка, выбирающий базу данных для последующей работы, USE имя_базы - функцию mysql_select_db(). Возможно, имеет смысл эти две задачи (установление соединения с сервером и выбор базы данных) вынести в отдельный модуль PHP и использовать его по мере необходимости:

 
<? 
    $db  =  "my_base";  //Имя  базы  данных 
    $user  =  "root";  //Пользователь  сервера  баз  данных 
    $pass  =  "";  //Пароль 
    $server  =  "localhost";  //Имя  сервера 
    //Создание  соединения 
    $link  =  mysql_connect($server,  $user,  $pass); 
    if(!$link)  die("Не  могу  соединиться  с  MySQL"); 
    mysql_select_db($db)  or  die("Не  могу  открыть  $db:  ".mysql_error()); 
?> 


Выделите соединение с сервером и выбор базы в отдельный модуль  

Помимо уже упоминавшихся ранее функций, в этом примере была использована еще одна функция - mysql_error(). Она позволяет получить информацию об ошибках, которые произошли при работе с активной на данный момент базой данных. Подобной функцией не следует пренебрегать хотя бы на этапе разработки, чтобы своевременно получать подробную информацию о возникших проблемах.

После успешного соединения с сервером база данных ему можно передавать SQL-запросы с помощью команды mysql_query(). При выполнении некоторых запросов - например, UPDATE или INSERT - может понадобиться только передать информацию серверу, но в большинстве случаев необходимо также получить результаты, которые вернул запрос:

 
<? 
$query  =  "SELECT  *  FROM  countries"; 
$result  =  mysql_query($query,  $link)  or  die(mysql_error()); 
?> 


Не забывайте выводить информацию об ошибках  

Обратите внимание, что запрос хранится в строковой переменной, и при занесении и извлечении данных может возникнуть проблема вложенных кавычек, которую можно решить использованием одинарных кавычек в запросе, или при необходимости экранированием обычных кавычек: ". Кавычки также могут встретиться и неявно, когда в SQL-запрос передается информация из других строковых переменных PHP. В подобных случаях следует использовать функцию PHP AddSlashes(), позволяющую экранировать кавычки в символьных данных, и StripSlashes(), позволяющую убрать экранирующие символы в данных, извлеченных из базы. Помимо этого, следует рассмотреть случай, когда данные в базу будут вводиться непроверенным пользователем, а сразу после извлечения из базы - использоваться для генерации html-страницы, например, гостевой книги, и исключить в этом случае потенциальную опасность использования пользователем тегов и команд javascript, преобразовав хранимые данные с помощью функции PHP htmlspecialchars().

После того как мы получили информацию от сервера баз данных и сохранили ее в переменной $result, перед нами встает задача извлечь из этой переменной информацию. Например, с помощью функции mysql_num_rows() можно узнать количество строк в итоговой выборке, полученной по запросу:

 
<? 
$num_of_rows  =  mysql_num_row($result); 
?> 


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

 
<? 
while($data  =  mysql_fetch_row($result)) 

    echo  $data[0]; 
    //обработка  данных  строки 

?> 


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

Особняком стоят случаи, когда мы не извлекаем, а вносим изменения в хранимую в базе данных информацию. В таких случаях очень часто может понадобиться узнать, в какое количество строк внес изменения наш SQL-запрос при выполнении таких команд, как INSERT, DELETE, UPDATE. В этом случае вместо функции mysql_num_row() нужно использовать функцию mysql_affected_rows(), которая и вернет необходимую информацию.

Обрабатывайте предварительно информацию пред занесением в БД  

Большинство SQL-запросов выполняется с помощью функции mysql_query(), но, как уже упоминалось выше, для выбора базы данных используется отдельная функция. Отдельные функции также существуют как для создания новой базы данных, так и для удаления уже существующей:

 
<? 
//Создание  базы  данных 
mysql_create_db("new",  $link); 
//Удаление  базы  данных 
mysql_drop_db("new",  $link); 
?> 


Для отсоединения от сервера баз данных существует функция mysql_close(), но, как правило, в ее использовании нет необходимости. Если было установлено постоянное соединение, то команда на закрытие его будет проигнорирована, а в случае использования функции mysql_connect() соединение будет разорвано по окончании работы PHP-сценария.


Дата публикации: 02/04/2015
Прочитано: 8401 раз
Дополнительно на данную тему:
Подсказки по работе в системе Google Adsense.
Песочница Google
Геометрия модульной сетки
Валидность HTML
Для чего нужна DNS
Как закачать сайт на сервер через FTP (CuteFTP)
Анатомия CMS: краткий обзор различных систем. Часть 1
Анатомия CMS: краткий обзор различных систем. Часть

Назад | Начало | Наверх
« Тарифные планы