Простой PHP-класс для работы с MySQL
При работе с MySQL вместо вызова соответствующих отдельных функций удобно использовать класс, который обернет эти функции в удобный интерфейс. Хочу предложить простой вариант такого класса.
Для работы с базой я использовал более современное чем mysql расширение mysqli, которое поддерживает новые возможности, появившиеся в последних версиях MySQL, и предлагает новые функции.
Итак, рассмотрим код класса:
class MyDB
{
private $db = null;
private $result = null;
/*Конструктору передаем адрес, имя пользователя, пароль, имя базы данных, порт, а также кодировку для соединения.
По умолчанию используется utf8*/
public function __construct($host, $user, $password, $base, $port = null, $charset = 'utf8')
{
$this->db = new mysqli($host, $user, $password, $base, $port);
$this->db->set_charset($charset);
}
/*основная и единственная функция, которая выполняет запрос и возвращает результат его работы*/
public function query($query)
{
if(!$this->db)
return false;
/*очищаем предыдущий результат*/
if(is_object($this->result))
$this->result->free();
/*выполняем запрос*/
$this->result = $this->db->query($query);
/*если есть ошибки - выводим их*/
if($this->db->errno)
die("mysqli error #".$this->db->errno.": ".$this->db->error);
/*если в результате выполнения запроса (например SELECT...) получены данные - возвращаем их.
ВНИМАНИЕ! данные всегда возвращаются в массиве, даже если запрос возвращает одну запись.*/
if(is_object($this->result))
{
while($row = $this->result->fetch_assoc())
$data[] = $row;
return $data;
}
/*если результат отрицательный - возвращаем false*/
else if($this->result == FALSE)
return false;
/*если запрос (например UPDATE или INSERT) затронул какие-либо строки - возвращаем их количество*/
else return $this->db->affected_rows;
}
}
{
private $db = null;
private $result = null;
/*Конструктору передаем адрес, имя пользователя, пароль, имя базы данных, порт, а также кодировку для соединения.
По умолчанию используется utf8*/
public function __construct($host, $user, $password, $base, $port = null, $charset = 'utf8')
{
$this->db = new mysqli($host, $user, $password, $base, $port);
$this->db->set_charset($charset);
}
/*основная и единственная функция, которая выполняет запрос и возвращает результат его работы*/
public function query($query)
{
if(!$this->db)
return false;
/*очищаем предыдущий результат*/
if(is_object($this->result))
$this->result->free();
/*выполняем запрос*/
$this->result = $this->db->query($query);
/*если есть ошибки - выводим их*/
if($this->db->errno)
die("mysqli error #".$this->db->errno.": ".$this->db->error);
/*если в результате выполнения запроса (например SELECT...) получены данные - возвращаем их.
ВНИМАНИЕ! данные всегда возвращаются в массиве, даже если запрос возвращает одну запись.*/
if(is_object($this->result))
{
while($row = $this->result->fetch_assoc())
$data[] = $row;
return $data;
}
/*если результат отрицательный - возвращаем false*/
else if($this->result == FALSE)
return false;
/*если запрос (например UPDATE или INSERT) затронул какие-либо строки - возвращаем их количество*/
else return $this->db->affected_rows;
}
}
Все очень просто :)
Используем так:
$db = new MyDB(SQL_HOST, SQL_LOGIN, SQL_PWD, SQL_BASE);
$data = $db->query("SELECT * FROM `table`");
print_r($data); //выводим полученные данные
$data = $db->query("SELECT * FROM `table`");
print_r($data); //выводим полученные данные
Данный класс можно модифицировать под ваши нужды, добавив необходимый функционал и получив в результате мощный и удобный инструмент для работы с MySQL.
|
|

Добавить комментарий