Библиотека php_mysql представляет классический файловый интерфейс к СУБД MySQL. На заре программирования, когда только устанавливались традиции современных програмных интерфейсов, было принято каждый объект рассматривать как файл:
Такой подход позволял использовать для всех операций привычную каждому программисту схему взаимодействия:
Одновременно может быть открыто несколько ресурсов (файлов). Чтобы отличать их друг от друга, используются специальные объекты — дескрипторы, при помощи которых можно получать доступ к тому или иному ресурсу. Благодаря дескрипторам можно одновременно работать сразу с несколькими открытыми источниками без конфликтов и опастности перепутать один русурс с другим.
При работе с MySQL из РНР используются два вида дескрипторов:
дескриптор соединения — индефицирует соединение с сервером: например, если одним приложением одновременно открыты соединения с двумя различными серверами, то для направления запроса по нужному адресу оно будет хранить два разных дескриптора, которые и будут передавать функциям в качестве параметра. Получить два дескриптора для одного и того же сервера с одинаковыми параметрами подключения нельзя — в этом случае библиотека вернет уже существующий дескриптор;
дескриптор результирующей таблицы — предназначен для доступа к результату выполнения запроса. Взаимодействие РНР-приложения и сервера MySQL происходит по клиент-серверной технологии: приложение отправляет серверу SQL-запрос, на который тот возвращает результирующую таблицу, идентифицированную данным дескриптором.
Результирующая таблица, в свою очередь, представляет собой ресурс, по которому можно осуществить навигацию: устанавливать курсор в начало таблицы и перемещаться по записям.
В первую очередь следует установить соединение с сервером при помощи функции mysql_connect(), которая имет следующий синтаксис:
resource mysql_connect ([$server [, $username [, $password [, $new_link
[, $client_flags]]]]])
Эта функция устанавливает соединение с сервером MySQL, сетевой адрес которого задается параметром $server. Вторым и третим аргументами этой функции являются имя пользователя базы данных $username и его пароль $password соответственно.
По умолчанию повторный вызов функции mysql_connect() с теми же аргументами не приводит к установлению нового соединения, вместо этого функция возвращает дескриптор уже существующего соединения. Если четвертому параметру $new_link присвоить значение true, будет открыто новое соединение с сервером.
Параметр $client_flags должен быть комбинацией из следующих констант:
MYSQL_CLIENT_COMPRESS — предписывает использование протокола сжатия при обмене информации между сервером и клиентом;
MYSQL_CLIENT_IGNORE_SPACE — в SQL-запросах после имен функций разрешается использование пробелов;
Примечание. Все аргументы функции являются не обязательными. В случае их отсутствия, по умолчанию, для этой функции устанавливаются следующие параметры: server = 'localhost: 3306', username принимает значение владельца сервера, а password — пустую строку.
В случае успеха функция возвращает дескриптор соединения с сервером, при неудаче возвращает значение false.
Рассмотрим пример.
Функция mysql_connect()
<?php
$dblocation="localhost"; //имя сервера
$dbuser="root"; //имя пользователя
$dbpasswd=""; //пароль
$dbcnx=@mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx) //если дескриптор равен 0, соединение не установлено
{
exit("<p>В настоящий момент сервер базы данных недоступен, поэтому корректное отображение страницы невозможно </p>");
}
else
{
echo("<p> Соединение установлено</p>");
}
?>
В окне веб-браузера это будет выглядеть ТАК.
Примечание. Для подавления вывода сообщений об ошибках, генерируемых РНР в окно браузера, в примере перед функцией mysql_connect() размещен символ @.
Переменные $dblocation, $dbuser, $dbpasswd хранят имя сервера, имя пользователя и пароль и, как правило, прописываются в отдельном файле(к примеру, config.php), который потом вставляется в каждый РНР-файл, содержащий код для работы с MySQL.
Если код не срабатывает, это может означать, что сервер базы данных не запущен. О том как запустить сервер описывается ЗДЕСЬ.
После того как соединение установлено, необходимо выбрать базу данных при помощи функции mysql_select_db(), которая эквивалентна вызову каманды USE в консольном клиенте mysql. Функция имеет следующий синтаксис:
bool mysql_select_db ($datebase_name [, $link_identifier])
Функция принимает в качестве аргументов название выбираемой базы данных $datebase_name и дескриптор соединения $link_identifier, который ранее был возвращен функцией mysql_connect(). Функция возвращает true при успешном выполнении операции и false —в противном случае.
Операция установки соединения с СУБД MySQL будет использоваться очень часто, поэтому выделим ее в отдельный РНР-файл config.php.
Установка соединения с MySQL-сервером ( config.php )
<?php
//Aдрес сервера MySQL
$dblocation="localhost";
//Имя базы данных на хостинге или локальной машине
$dbname="test";
//Имя пользователя базы данных
$dbuser="root";
//его пароль
$dbpasswd="";
//устанавливаем соединение с базой данных
$dbcnx=@mysql_connect($dblocation, $dbuser, $dbpasswd);
if(!$dbcnx) {
exit("<p>В настоящий момент сервер базы данных не доступен, поэтому корректное отбражение страницы невозможно</p>");
}
//выбираем базу данных
if(!@mysql_select_db($dbname, $dbcnx))
{
exit("<p>В настоящий момент база данных не доступна, поэтому корректное отбражение страницы невозможно </p>");
}
?>
Рассмотрим пример возвращающий версию MySQL-сервера. Файл config.php включается в скрипт при помощи конструкции require_once().
Для получения версии сервера MySQL используется информационная функция VERSION().
Получение версии MySQL-сервера
<?php
//Устанавливаем соединение с базой данных
require_once("config.php");
//Формируем и выполняем SQL-запрос
$query="SELECT VERSION()";
$ver=mysql_query($query);
//Проверяем правильность выполнения запроса
if(!$ver) exit("Ошибка выполнения запроса " .mysql_error());
//Получаем результат выполнения запроса
echo mysql_result($ver,0);
?>
В окне веб-браузера это будет выглядеть ТАК.
Более полный список функций расширения РНР, предназначенного для работы с СУБД MySQL, представлена в таблице.
Похожие материалы по теме: Доступ к базе данных MySQL с помощью РНР. Выполнение запросов к базе данных с помощью РНР