Мой сайт — моя визитная карточка

Подключение к СУБД только там, где это необходимо

В соседней статье я описывал как подключаться к MySQL-серверу. Но там говорилось о подключении как таковом. Очень редко кто-то в своих сценариях использует именно тот способ, который был описан там. Сейчас мы поговорим о том, как выполнять подключения к серверу управления базами данных только в участках сценария, когда это действительно необходимо.

Одним из таких способов является использование пользовательских функций. Суть такого метода заключается в особенностях, связанных с областью видимости переменных. Для соединения с сервером управления базами данных создадим функциюconnect(). Рекомендую эту функцию сохранить в отдельный файл. Например, database.php

/**
  * Функция для подключения к СУБД MySQL.
  * Функция не принимает никаких параметров.
  * Функция предназначена для использования, в основном,
  * с одной базой данных
  */
function connect() {
	// Объявляем переменные, в которых будут храниться параметры для подключения к СУБД
	$db_host = 'localhost';		// Сервер
	$db_user = 'mysql_user';	// Имя пользователя
	$db_password = '123456';	// Пароль пользователя
	$db_name = 'mysql';			// Имя базы данных
	
	// Подключаемся к серверу
	$conn = mysql_connect($db_host, $db_user, $db_password) or die("<p>Невозможно подключиться к СУБД: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>");
	
	// Эта часть кода выполнится только в случае успешного подключения к серверу
	// Выбираем базу данных
	$db = mysql_select_db($db_name, $conn) or die("<p>Невозможно подключиться к базе данных: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>");
	
	// Эта часть кода выполняется только в случае успешного подключения к БД
	// Указываем серверу, что данные, которые мы от него получаем, нам нужны в кодировке UTF-8
	$query = mysql_query("set names utf8", $conn) or die("<p>Невозможно выполнить запрос к базе данных: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>");
}

Итак, инструмент подключения к СУБД MySQL есть. Теперь его нужно реализовать. Я рекомендую вам не производить непосредственно в теле вашего основного сценария никаких расчетов, не запускать какие-то алгоритмы. Основной ваш сценарий должен быть предназначен для формирования HTML-кода страницы. А вся «логика» должна выполниться еще до первого html-тега, определяющего тип документа. То есть подключиться к СУБД, извлечь оттуда нужную информацию, сделать с ней всё, что необходимо и отключиться от СУБД, нужно до начала формирования веб-страницы. Реализовать это можно следующим образом.

/**
  * Файл document.php 
  *
  * Получаем из базы данных информацию о пользователях сайта.
  * Предполагается, что в базе данных есть таблица, в которой
  * имеются следующие поля: id, login, name
  */
  
// Для возможности подключения к СУБД нам необходимо подключить 
// файл database.php. Предполагается, что этот файл лежит
// в том же каталоге, что и файл с функцией подключения к СУБД
require_once('database.php');

// Для извлечения информации из БД объявляем функцию
function getUsersInfo() {
	// Вызываем функцию подключения к базе данных
	connect();

	// Объявляем переменную, в которую будет помещена информация о пользователях,
	// это будет массив
	$array = array();
	
	// Если соединение успешно установлено, не будет никаких сообщений об ошибках
	// Составляем строку SQL-запроса для получения информации о пользователях
	// Получить значения полей id, login, name из таблицы users, отсортировать
	// по значению поля id в порядке убывания
	$sql = "SELECT `id`,`login`,`name` FROM `users` ORDER BY `id` DESC";

	// Выполняем запрос к базе данных
	$query = mysql_query($sql) or die("<p>Невозможно выполнить запрос к базе данных: " . mysql_error() . ". Ошибка произошла в строке " . __LINE__ . "</p>");

	/**
	  * Действия с результатами запроса, в результате которых
	  * у нас будет массив $array, содержащий информацию 
	  * о пользователях уже не будет пустым
	  */

	// Не забываем закрывать соединенние с СУБД
	mysql_close();

	// Возвращаем массив данных о пользователях в сценарий
	return $array;
}

// Осуществляем получение информации о пользователях, вызвав соответствующую функцию
// результат присвоим переменной
$users = getUsersInfo();		// В переменную будет записано возвращенный массив $array;

// Закрывающий тег PHP, формируем HTML-страницу
?>
<html>
	<head>
		<title>Таблица информации о пользователях</title>
	</head>
	<body>
		<table>
			<tr>
				<td>
					Логин: <?=$users[0]['login'];?>
				</td>
				<td>
					Имя: <?=$users[0]['name'];?>
				</td>
			</tr>
			<tr>
				<td>
					Логин: <?=$users[1]['login'];?>
				</td>
				<td>
					Имя: <?=$users[1]['name'];?>
				</td>
			</tr>
		</table>
	</body>
</html>

Преимуществом такого способа обращения к СУБД является то, что мы лишь однажды позаботились о создании инструмента подключения к MySQL, и можем вызывать его когда угодно, где угодно и сколь угодно много.

Я разместил эту статью: 26.07.2013
Количество просмотров: 6731
Яндекс.Метрика