config = new Config; //создаем обьект mysqli и подключаемся к базе данных $this->mysqli = new mysqli($this->config->db_host, $this->config->db_user, $this->config->db_password, $this->config->db_name); //устанавливаем кодировку соединения utf-8 $this->mysqli->query("SET NAMES 'utf8'"); } //функция для получения экземпляра обьекта класса db, singleton //проверяем создан ли обьект db, если нет, то создаем его, в любом случае возвращаем db public static function getDB(){ if(self::$db == null) self::$db = new DataBase(); return self::$db; } //функция для улучшения безопасности, происходит замена sym_query на полученные параметры //параметры пропускаются через функцию mysqli_real_escape_string public function setQuery($query, $params){ if($params){ for($i = 0; $i < count($params); $i++){ $pos = strpos($query, $this->config->sym_query); $arg = "'".$this->mysqli->real_escape_string($params[$i])."'"; $query = substr_replace($query, $arg, $pos, strlen($this->config->sym_query)); } } return $query; } public function query($query, $params = false){ $res = $this->mysqli->query($this->setQuery($query, $params)); if($res){ if($this->mysqli->insert_id === 0) return true; else return $this->mysqli->insert_id; } else return false; } //функция возвращает двомерный массив, результат выборки из бд public function select($query, $params = false){ $result_set = $this->mysqli->query($this->setQuery($query, $params)); if(!$result_set) return false; return $this->resultSetToArray($result_set); } //функция возвращает одну строку public function selectRow($query, $params = false){ $result_set = $this->mysqli->query($this->setQuery($query, $params)); if(!$result_set) return false; if($result_set->num_rows != 1) return false; return $result_set->fetch_assoc(); } //функция возвращает значение определенного поля public function selectCell($query, $params = false){ $result_set = $this->mysqli->query($this->setQuery($query, $params)); if((!$result_set) || ($result_set->num_rows != 1)) return false; $arr = array_values($result_set->fetch_assoc()); return $arr[0]; } //функция преобразовывает табличные данные в двомерный массив private function resultSetToArray($result_set){ $array = array(); while(($row = $result_set->fetch_assoc()) != false){ $array[] = $row; } return $array; } //закрытия соединения с базой данных public function __destruct(){ if($this->mysqli) $this->mysqli->close(); } } ?>