Подключение
| Автор: | Артемьев Сергей Игоревич |
| ICQ: | 438856621 |
| email: | _spin_@bk.ru |
Первое действие, которое надо сделать при работе с базой данных - выполнить подключение. Для этого вам потребуется знать имя сервера, название базы данных, имя пользователя и пароль. В некоторых случаях требуется ещё знать порт сервера, к которому подключен MySQL.
Подключение выполняется при помощи фукций mysql_connect() или mysql_pconnect():
<?php
$server = 'localhost';
$user = 'root';
$password = 'P@ssw0rd';
$dblink = mysql_connect($server, $user, $password);
if($dblink)
echo 'Ошибка подключения к серверу баз данных';
else
die('Ошибка подключения к серверу баз данных');
// Теперь в переменной $dblink содержится
// ссылка на временное подключение к базе данных
?>
Если необходимо указать порт подключения, то его надо просто дописать через двоеточие к имени сервера:
<?php ... $port = '12345'; $server = 'localhost:' . $port; $dblink = mysql_connect($server, $user, $pass); ... ?>
Синтаксис функции mysql_pconnect() полностью аналогичен синтаксису mysql_connect():
<?php $dblink = mysql_pconnect($server, $user, $pass); // Теперь в переменной $dblink содержится // ссылка на постоянное подключение к базе данных ?>
Функция mysql_connect() открывает временное соединение, которое закрывается либо при вызове функции mysql_close(), либо автоматически при завершении скрипта. В свою очередь, функция mysql_pconnect() создаёт постянное подключение, которое остаётся открытым даже после завершения скрипта (буква "p" в имени означает "Persistent", т.е. "постоянный"). При повторном вызове mysql_pconnect() интерпретатор сначала пытается найти и использовать открытое ранее подключение, и только в случае неудачи открывает новое.
Следующий шаг - выбор базы данных при помощи функции mysql_select_db(). Эта функция указывает СУБД, что все последующие запросы надо выполнять с таблицами указанной базы данных:
<?php
$database = 'myDatabase';
$selected = mysql_select_db($database, $dblink);
if($selected)
echo 'Подключение к базе данных прошло успешно';
else
die('База данных не найдена или отсутствует доступ');
?>
Здесь мы использовали функцию die() с единственным параметром - сообщением об ошибке. Вызов die() моментально прерывает выполнение скрипта и выводит указанное сообщение в браузер пользователя. Использовать die() желательно только в аварийных случаях, когда дальнейшее выполнение скрипта не имеет смысла. Например, если при загрузке форума оказывается, что база данных сообщений недоступна - дальнейшая загрузка теряет всякий смысл.
Начальное подключение выполнено, теперь надо настроить параметры соединения. Основной параметр, который желательно установить принудительно - кодовая страница (charset). Кодовая страница - это правило сопоставления символов различных языков. MySQL при работе с символами опирается на числовые коды символов, т.е. любая строка для сервера - это просто последовательность чисел. И именно кодовая страница определяет, какому символу соответствует то или иное число. Например, символ с кодом 196 - это буква "Д" в русской кодировке, "Дельта" в греческой и "Ä" в западноевропейской кодировке.
По-умолчанию, MySQL использует кодировки "latin1" (западноевропейская) , поэтому при попытке записать на сервер или считать с него данные в национальной кодировке (например, русский текст) - произойдёт конфликт сопоставлений и все конфликтующие символы будут заменены на знаки вопроса "?".
Установка кодовой страницы производится при помощи функции mysql_set_charset() или путём выполнения специализированных запросов SET:
<?php
if (!function_exists('mysql_set_charset')) {
function mysql_set_charset($charset, $dblink)
{
return mysql_query("set names $charset",$dlink);
}
}
$mycharset = "cp1251";
mysql_set_charset($charset, $dblink)
?>
В этом скрипте проверяется наличие функции mysql_set_charset(), и если она не найдена - определяется функция, выполняющая аналогичное дествие посредством SQL-запроса.
После выполнения этого скрипта и сервер баз данных и интерпретатор PHP будут рассматривать все передаваемые строковые данные как символы в кодировке cp1251 (Windows-кирилическая) и конфликтов сопоставления не возникнет. Если же необходимо обеспечить одновременную поддержку сразу нескольких языков - воспользуйтесь кодировкой utf8 (Юникод).
Как правило, базы данных и интерпретатор PHP располагаются на разных серверах и связаны по сети. Поэтому нельзя гарантировать, что постоянное соединение, открытое при предыдущем запуске скрипта, будет доступно и сейчас. Соединение с сервером может быть утеряно по различным причинам: сбой сети, отказ или перегрузка сервера и т.п.
Для проверки подключения можно воспользоваться функцией mysql_ping(). Она возвращает true или false в зависимости от состояния соединения:
<?php
if (!mysql_ping($dblink)) {
echo 'Соединение с базой данных потеряно';
// здесь можно попробовать
// повторно подключиться
}
?>
Так же эту функцию имеет смысл использовать при выполнении длительных операций, когда соединение открывается и длительное время остаётся неактивным, т.к. сервер в целях экономии ресурсов может принудительно отключить простаивающее подключение.
Итак, мы получили доступ к базе данных и готовы получать и обрабатывать данные.