Библиотека php_mysql
представляет классический файловый интерфейс к СУБД MySQL. На заре программирования, когда только устанавливались традиции современных програмных интерфейсов, было принято каждый объект рассматривать как файл:
- фрагмент памяти на жестком диске — файл;
- каталог — файл, хранящий список других файлов;
- внешнее устройство или сетевая карта — это тоже файл, только специального типа.
Такой подход позволял использовать для всех операций привычную каждому программисту схему взаимодействия:
- Открыть ресурс.
- Записать или прочитать из ресурса данные.
- Закрыть ресурс.
Одновременно может быть открыто несколько ресурсов (файлов). Чтобы отличать их друг от друга, используются специальные объекты — дескрипторы, при помощи которых можно получать доступ к тому или иному ресурсу. Благодаря дескрипторам можно одновременно работать сразу с несколькими открытыми источниками без конфликтов и опастности перепутать один русурс с другим.
При работе с MySQL из РНР используются два вида дескрипторов:
- дескриптор соединения — индефицирует соединение с сервером: например, если одним приложением одновременно открыты соединения с двумя различными серверами, то для направления запроса по нужному адресу оно будет хранить два разных дескриптора, которые и будут передавать функциям в качестве параметра. Получить два дескриптора для одного и того же сервера с одинаковыми параметрами подключения нельзя — в этом случае библиотека вернет уже существующий дескриптор;
- дескриптор результирующей таблицы — предназначен для доступа к результату выполнения запроса. Взаимодействие РНР-приложения и сервера MySQL происходит по клиент-серверной технологии: приложение отправляет серверу SQL-запрос, на который тот возвращает результирующую таблицу, идентифицированную данным дескриптором.
Результирующая таблица, в свою очередь, представляет собой ресурс, по которому можно осуществить навигацию: устанавливать курсор в начало таблицы и перемещаться по записям.
Соединение с сервером MySQL
В первую очередь следует установить соединение с сервером при помощи функции 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-запросах после имен функций разрешается использование пробелов;MYSQL_CLIENT_INTERACTIVE
— ждатьinteractive_timeout
секунд до закрытия соединения, если между сервером и клиентом не происходит обмена данными.
Примечание. Все аргументы функции являются не обязательными. В случае их отсутствия, по умолчанию, для этой функции устанавливаются следующие параметры: server = 'localhost: 3306'
, username
принимает значение владельца сервера, а password
— пустую строку.
В случае успеха функция возвращает дескриптор соединения с сервером, при неудаче возвращает значение false.
Рассмотрим пример.
<?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
.
<?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()
.
<?php
//Устанавливаем соединение с базой данных
require_once("config.php");
//Формируем и выполняем SQL-запрос
$query="SELECT VERSION()";
$ver=mysql_query($query);
//Проверяем правильность выполнения запроса
if(!$ver) exit("Ошибка выполнения запроса " .mysql_error());
//Получаем результат выполнения запроса
echo mysql_result($ver,0);
?>
Более полный список функций расширения РНР, предназначенного для работы с СУБД MySQL, представлена в таблице.
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться