Простой 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;
        }
}

Все очень просто :)
Используем так:
 
$db = new MyDB(SQL_HOST, SQL_LOGIN, SQL_PWD, SQL_BASE);
$data = $db->query("SELECT * FROM `table`");
print_r($data); //выводим полученные данные

Данный класс можно модифицировать под ваши нужды, добавив необходимый функционал и получив в результате мощный и удобный инструмент для работы с MySQL.


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

Логин:
Пароль:
Проверочное число: