В этой статье сегодня поговорим о создании подключения к базе данных и обсудим какой вариант лучше использовать процедурный или объектно — ориентированный. Для начала давайте разберем на каком уровне мы находимся, если это уровень полного новичка, тогда мой совет без исключения начать использовать процедурный стиль подключения к базе данных. Ранее я писал статью по этой теме на своем блоге, подробнее о процедурном стиле подключения к базе данный читайте в статье: «Как подключиться к MySQL используя PHP». Если за плечами есть уже какой нибудь опыт работы с процедурным стилем подключения к базе данных, тогда Вас наверное как и меня мои проекты просто взяли и заставили использовать объектно — ориентированный подход.
Так или иначе мы сейчас разберем этапы построения класса для создания подключения к базе данных MySQL на языке PHP. Нам понадобиться два PHP файла, в один файл мы «положим» класс для создания подключения к базе данных, а во — втором будем работать с этим классом.
Создадим два файла:
- index.php;
- database.class.php;
Думаю, мы не маленькие уже дети и знаем, что нам нужно для работы с PHP файлами. Установленный веб — сервер Apache, PHP, СУБД MySQL и знает куда эти файлы положить — (для тех, кто не знает или забыл).
Файл в котором храниться класс я выношу в отдельный файл и именую его в формате: имя класса.class.php и я знаю, что храниться у меня в этом файле. Когда в проекте много классов, можно потеряться, поэтому рекомендую именовать файлы с классами в формате описанным выше.
Файл database.class.php:
<?php
/*
Класс создает соединение с базой данных
*/
class DataBase
{
public static $mConnect; // Хранит результат соединения с базой данных
public static $mSelectDB; // Хранит результат выбора базы данных
}
?>
Давайте сейчас разберем, что было создано на данном шаге. С помощью ключевого слова «class», имени класса — DataBase и фигурный скобок мы создали тело класса. В созданном классе мы создали два свойства, в $mConnect — где храниться результат соединения с базой данных и $mSelectDB — где храниться результат выбора базы данных. Вы могли заметить ключевые слова в каждом свойстве — public и static. О чем они говорят? Public означает, что свойство доступно из вне класса, а static дает возможность обращаться или вызывать свойство без создания экземпляра класс, что очень часто удобно в работе.
Добавим метод Connect() для создания соединения с базой:
<?php
/*
Класс создает соединение с базой данных
*/
class DataBase
{
public static $mConnect; // Хранит результат соединения с базой данных
public static $mSelectDB; // Хранит результат выбора базы данных
// Метод создает соединение с базой данных
public static function Connect($host, $user, $pass, $name)
{
// Пробуем создать соединение с базой данных
self::$mConnect = mysql_connect($host, $user, $pass);
// Если подключение не прошло, вывести сообщение об ошибке..
if(!self::$mConnect)
{
echo "<p><b>К сожалению, не удалось подключиться к серверу MySQL</b></p>";
exit();
return false;
}
// Пробуем выбрать базу данных
self::$mSelectDB = mysql_select_db($name, self::$mConnect);
// Если база данных не выбрана, вывести сообщение об ошибке..
if(!self::$mSelectDB)
{
echo "<p><b>".mysql_error()."</b></p>";
exit();
return false;
}
// Возвращаем результат
return self::$mConnect;
}
}
?>
Метод Connect() который мы добавили, его основная задача создать соединение с базой данных, в противном случае сообщить пользователю ошибку. Метод Connect() принимает в качестве параметра:
- $host — IP адрес сервера, на локальном ПК это localhost;
- user — имя пользователя базы данных;
- $pass — пароль пользователя базы данных;
- $name — имя базы данных к которой подключаемся;
Функция mysql_connect() создает соединение с базой данных, результат выполнения сохраняет в $mConnect. Далее идет проверка конструкцией IF: Если подключение не прошло успешно, вывести сообщение об ошибке… Иначе PHP проигнорирует блок IF и пойдет дальше выбирать базу данных. Функция mysql_select_db() производит выбор имени базы данных, если в базе не существует запрашиваемой база данных, в этом случае программа сообщит пользователю об ошибке. Если все пройдет успешно, соединение с базой данных вернет return.
Добавляем метод Close():
<?php
/*
Класс создает соединение с базой данных
*/
class DataBase
{
public static $mConnect; // Хранит результат соединения с базой данных
public static $mSelectDB; // Хранит результат выбора базы данных
// Метод создает соединение с базой данных
public static function Connect($host, $user, $pass, $name)
{
// Пробуем создать соединение с базой данных
self::$mConnect = mysql_connect($host, $user, $pass);
// Если подключение не прошло, вывести сообщение об ошибке..
if(!self::$mConnect)
{
echo "<p><b>К сожалению, не удалось подключиться к серверу MySQL</b></p>";
exit();
return false;
}
// Пробуем выбрать базу данных
self::$mSelectDB = mysql_select_db($name, self::$mConnect);
// Если база данных не выбрана, вывести сообщение об ошибке..
if(!self::$mSelectDB)
{
echo "<p><b>".mysql_error()."</b></p>";
exit();
return false;
}
// Возвращаем результат
return self::$mConnect;
}
// Метод закрывает соединение с базой данных
public static function Close()
{
// Возвращает результат
return mysql_close(self::$mConnect);
}
}
?>
Следующий и уже последний в этом классе метод Close() — закрывает соединение с базой данных, функция mysql_close() закрывает соединение с сервером MySQL и возвращает результат.
Файл index.php:
<?php
// Параметры соединения с базой данных
define('DB_SERVER', 'localhost'); // IP адрес сервера БД или если локальный ПК localhost
define('DB_USERNAME', 'root'); // Имя пользователя
define('DB_PASSWORD', 'password'); // Пароль пользователя
define('DB_DATABASE', 'yats'); // Имя базы данных
// Загружаем соединение с базой данных
require_once 'database.class.php';
// Соединение с базой данных
DataBase::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
// Выполняет запрос к базе данных
$result = mysql_query("SELECT VERSION() AS VERSION");
// Обрабатывает ряд результата запроса и возвращает ассоциативный массив
$row = mysql_fetch_assoc($result);
// Выводит версию сервера MySQL
echo $row['VERSION'];
// Закрываем соединение с базой данных
DataBase::Close();
?>
С помощью функции define() мы создали константы, для хранения параметров соединения с базой данных. Require_once подключает наш класс DataBase в файл index.php.
Давайте вспомним ключевое слово static, которое использовалось в классе DataBase в свойствах и методах данного класса. Это дает нам возможность обращаться к свойствам и методам класса через "::" (два двоеточия). Метод DataBase::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE), принимает 4 параметра — созданные функцие define() константы, в которых хранится информация о соединения с базой данных. Если соединение пройдет успешно, метод Connect() вернет нам соединение с базой данных. Далее мы сможем работать и выполнять запросы к базе данных. Функция mysql_query() — выполняет запрос к базе данных. Функция mysql_fetch_assoc() — обрабатывает ряд результата запроса и возвращает ассоциативный массив. Конструкция echo выводит версию сервера MySQL. И в завершение метод DataBase::Close() — закроет соединение с базой данных.
Автор: yats
Не работает )
Спасибо за материал, очень удобный класс.. все заработало.
спасибо, помогло
Большое спасибо! Вроде все понятно :) будем использовать! )
Все проделал как описано в статье. Сверял 4 раза, ато и более строчка в строчку.
Выдает ошибку Fatal error: Call to undefined method DataBase::Connect()
Подскажите, что делать?
А все поправил. Все нашел. ВСе работает. Причина не внимательность.