Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //Класс для работы с БД
- abstract class AbstractDataBase{
- private $mysqli; //Идентификатор соединения
- private $sq; //Строка заменяющая значение запросов
- private $prefix; //Префикс у таблиц
- protected function __construct($db_host, $db_user, $db_password, $db_name, $sq, $prefix){
- $this->mysqli = @new mysqli($db_host, $db_user, $db_password, $db_name);
- if($this->mysqli->connect_errno) exit("<div style='font-size: 120%; text-align:center; position: relative; top: 35%; min-width: 600px;'><span style='border: 1px solid red; color: red; padding: 10px; margin-bottom: 10px;'>Ошибка соединение с БД</span><br /><br/><br/><span style='border: 1px solid red; color: red; padding: 10px;'>Введите корректные данные к БД, в конфигурационном файле!</span></div>");
- $this->sq = $sq;
- $this->prefix = $prefix;
- $this->mysqli->query("SET 1c_time_names = 'ru_RU'"); //Устанавливаем локаль (Часовой пояс)
- $this->mysqli->set_charset("utf8");
- }
- public function getSQ(){
- return $this->sq;
- }
- public function getQuery($query, $params){ //Принимает запрос, и параметры
- if($params){ //Алгорити замены спец символов на параметры в запроссе
- $offset = 0; //Смещение
- $len_sq = strlen($this->sq);
- for($i = 0; $i < count($params); $i++){
- $pos = strpos($query, $this->sq, $offset); //Позиция вхождения спец знака
- if(is_null($params[$i])) $arg = "NULL";
- else $arg = "'".$this->mysqli->real_escape_string($params[$i])."'";
- $query = substr_replace($query, $arg, $pos, $len_sq);
- $offset = $pos + strlen($arg);
- }
- }
- return $query;
- }
- /*Занимаеться выборкой в таблице значений принимает в качестве параметра обьект*/
- public function select(AbstractSelect $select){ //Строка с запросом, просто в виде обьекта
- $result_set = $this->getResultSet($select, true, true);
- if(!$result_set) return false;
- $array = array();
- while(($row = $result_set->fetch_assoc()) != false){
- $array[] = $row;
- }
- return $array;
- }
- /*Занимаеться выборкой в таблице значений принимает в качестве параметра обьект*/
- /*Метод позволяющий извлечь строку из таблицы*/
- public function selectRow(AbstractSelect $select){
- $result_set = $this->getResultSet($select, false, true);
- if(!$result_set) return false;
- return $result_set->fetch_assoc();
- }
- /*Метод позволяющий извлечь строку из таблицы*/
- /*Метод позволяющий извлечь стобец из таблицы*/
- public function selectCol(AbstractSelect $select){
- $result_set = $this->getResultSet($select, true, true);
- if(!$result_set) return false;
- $array = array();
- while(($row = $result_set->fetch_assoc()) != false){
- foreach($row as $value){
- $array[] = $value;
- break;
- }
- }
- return $array;
- }
- /*Метод позволяющий извлечь стобец из таблицы*/
- /*Метод позволяющий извлечь содержимое ячейки*/
- public function selectCell(AbstractSelect $select){
- $result_set = $this->getResultSet($select, false, true);
- if(!$result_set) return false;
- $array = array_values($result_set->fetch_assoc());
- return $array[0];
- }
- /*Метод позволяющий извлечь содержимое ячейки*/
- /*Метод вставки в таблицу*/
- public function insert($table_name, $row){
- if(count($row) == 0) return false;
- $table_name = $this->getTableName($table_name);
- $fields = "(";
- $values = "VALUES (";
- $params = array();
- foreach($row as $key => $value){
- $fields .= "`$key`,";
- $values .= $this->sq.",";
- $params[] = $value;
- }
- $fields = substr($fields, 0, -1);
- $values = substr($values, 0, -1);
- $fields .= ")";
- $values .= ")";
- $query = "INSERT INTO `$table_name` $fields $values";
- return $this->query($query, $params);
- }
- /*Метод вставки в таблицу*/
- /*Метод обновления записей в таблице*/
- public function update($table_name, $row, $where = false, $params = array()){
- if(count($row) == 0) return false;
- $table_name = $this->getTableName($table_name);
- $query = "UPDATE `$table_name` SET ";
- $params_add = array();
- foreach($row as $key => $value){
- $query .= "`$key` = ".$this->sq.",";
- $params_add[] = $value;
- }
- $query = substr($query, 0, -1);
- if($where){
- $params = array_merge($params_add, $params);
- $query .= "WHERE $where";
- }
- return $this->query($query, $params);
- }
- /*Метод обновления записей в таблице*/
- /*Метод удаление записей в таблице*/
- public function delete($table_name, $where = false, $params = array()){
- $table_name = $this->getTableName($table_name);
- $query = "DELETE FROM `$table_name`";
- if($where){
- $query .= "WHERE $where";
- }
- return $this->query($query, $params);
- }
- /*Метод удаление записей в таблице*/
- /*Получение полного название таблицы*/
- public function getTableName($table_name){
- return $this->prefix.$table_name;
- }
- /*Получение полного название таблицы*/
- /*Выполнение запроса*/
- private function query($query, $params = false){
- $success = $this->mysqli->query($this->getQuery($query, $params));
- if(!$success) return false;
- if($this->mysqli->insert_id === 0) return true;
- return $this->mysqli->insert_id;
- }
- /*Выполнение запроса*/
- /*Выборка записей передаеться обьект запроса, может ли быть в качестве выборки ноль записей, может ли быть в качестве выборки одна запись*/
- private function getResultSet(AbstractSelect $select, $zero, $one){
- $result_set = $this->mysqli->query($select);
- if(!$result_set) return false;
- if((!$zero) && ($result_set->num_rows == 0)) return false;
- if((!$one) && ($result_set->num_rows == 1)) return false;
- return $result_set;
- }
- /*Выборка записей передаеться обьект запроса, может ли быть в качестве выборки ноль записей, может ли быть в качестве выборки одна запись*/
- public function __destruct(){
- if (($this->mysqli) && (!$this->mysqli->connect_errno)) $this->mysqli->close();
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement