Подключение
Автор: | Артемьев Сергей Игоревич |
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 'Соединение с базой данных потеряно'; // здесь можно попробовать // повторно подключиться } ?>
Так же эту функцию имеет смысл использовать при выполнении длительных операций, когда соединение открывается и длительное время остаётся неактивным, т.к. сервер в целях экономии ресурсов может принудительно отключить простаивающее подключение.
Итак, мы получили доступ к базе данных и готовы получать и обрабатывать данные.