|  | 
Одной из причин популярности сервера баз данных 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-сценария.
Ссылки по теме
- MySQL в веб-проектах
- Создание базы данных в MySQL
- Редактирование информации в MySQL
- Выборка информации в MySQL
Статья получена: hostinfo.ru














 Противовирусные препараты: за и против
Противовирусные препараты: за и против Добро пожаловать в Армению. Знакомство с Арменией
Добро пожаловать в Армению. Знакомство с Арменией Крыша из сэндвич панелей для индивидуального строительства
Крыша из сэндвич панелей для индивидуального строительства Возможно ли отменить договор купли-продажи квартиры, если он был уже подписан
Возможно ли отменить договор купли-продажи квартиры, если он был уже подписан Как выбрать блеск для губ
Как выбрать блеск для губ Чего боятся мужчины
Чего боятся мужчины Как побороть страх перед неизвестностью
Как побороть страх перед неизвестностью Газон на участке своими руками
Газон на участке своими руками Как правильно стирать шторы
Как правильно стирать шторы Как просто бросить курить
Как просто бросить курить

 - 2301 -
 - 2301 -
            


