При работе в PHP с 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. Удачи в работе с MySQL!

 

 

Комментарии

comments powered by Disqus