HTML, Excel, Word, SEOОсновы PHP ⇒ Подключение

PHP для "чайников"

Инструменты
Выбираем IDE
Выбираем Web-сервер
Выбираем СУБД
Структура языка PHP
Первый шаг
Синтаксис
Типы данных
Переменные и константы
Операторы
Выражения
Управляющие структуры
Функции
Классы
Исключения
Ошибки
Массивы
Глобальные массивы
Cookies
Сессии
Загрузка файлов
Работа с файлами
Работа с файлами на диске
Работа с данными в файле
Пример управления файлами
Работа с базами данных
Подключение
Анализ результатов
Выполнение запросов
Отключение
Пример: отслеживание пользователей
Работа в сети
Отправка почты
Безопасность
HTTP-аутентификация
Защита логином и паролем
Автоматизация
Регулярные выражения в PHP
Интеграция
PHP и JavaScript



Подключение


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

Так же эту функцию имеет смысл использовать при выполнении длительных операций, когда соединение открывается и длительное время остаётся неактивным, т.к. сервер в целях экономии ресурсов может принудительно отключить простаивающее подключение.

Итак, мы получили доступ к базе данных и готовы получать и обрабатывать данные.

 



В начало страницы



В начало страницы