Вход Регистрация
Файл: engine/classes/My_sqli.php
Строк: 88
<?php

   
/**
    * @author Tadochi
    */

    
class My_sqli
    
{
        public 
$db$db_config;
        public 
$error;
        public 
$result null// Результат последнего запроса
        
public $logs = array();
        public 
$timer$using_time;
        public 
$queries 0;
        public 
$log_id 1;

        public function 
__construct($set)
        {
            
$this->db_config $set;
            return 
$this->db;
        }

        public function 
connect()
        {
            
$this->timer microtime(1);
            
$this->db mysqli_connect($this->db_config['mysql_host'], $this->db_config['mysql_user'], $this->db_config['mysql_pass'], $this->db_config['mysql_db_name']);
            
$this->log('Соединение с базой данных');
            
$this->timer microtime(1);
            
mysqli_set_charset($this->db'utf8'); //mysqli_query($this->db, 'SET NAMES utf8');
            
$this->log('Установка кодировки по умолчанию');
            return 
$this->db;
        }

        public function 
__destruct()
        {
            
$this->free();
            
mysqli_close($this->db);
        }
        
        public function 
log($msg)
        {
            
$timer round(microtime(1) - $this->timer4);
            
$this->using_time += $timer;
            
$this->logs[$this->log_id++ . ') ' $timer ' sec'] = $msg;
        }
        
        public function 
table_exists($table)
        {
            if (
$this->db == null)
            {
                
$this->connect();
            }

            
$this->timer microtime(1);
            
$return $this->query("SHOW TABLES LIKE '$table'")->result();
            
$this->log('Проверка существования таблицы '$table);
            return 
$return;
        }
        
        public function 
free($multi false)
        {
            if (
$this->db == null)
            {
                
$this->connect();
            }

            
$this->timer microtime(1);
            if (
$multi)
            {
                do
                {
                    if (!
mysqli_more_results($this->db))
                    break;

                    if (
$result mysqli_store_result($this->db))
                    {
                        
mysqli_free_result($result);
                    }
                }
                while (
mysqli_next_result($this->db));
            }

            if (!empty(
$this->result) && !is_bool($this->result))
                
mysqli_free_result($this->result);
            
$this->result null;
            
$this->log('Очистка результатов запроса');
        }

        public function 
num_rows($query false)
        {
            
$this->timer microtime(1);
            
$return mysqli_affected_rows($this->db);
            
$this->log('Выполнение mysqli_affected_rows');
            return 
$return;
        }

        public function 
result($query false)
        {

            if (!
$query)
                
$query $this->result;
            
$this->timer microtime(1);
            
$result mysqli_fetch_row($query);
            
$this->log('Выполнение mysqli_fetch_row');
            return 
$result[0];
        }
        
        public function 
fetch($query false)
        {
            if (!
$query)
                
$query $this->result;
            
$this->timer microtime(1);
            
$return mysqli_fetch_assoc($query);
            
$this->log('Выполнение mysqli_fetch_assoc');
            return 
$return;
        }

        public function 
from_file($file)
        {
            if (
file_exists($file))
            {
                
$this->log('Выполнение запросов из файла '.$file);
                return 
$this->multi(file_get_contents($file));
            }
        }
        
        public function 
multi($query)
        {
            if (
$this->db == null)
            {
                
$this->connect();
            }

            
$this->timer microtime(1);
            
$this->result mysqli_multi_query($this->db$query);
            
$count substr_count($query';');
            
$this->queries += $count;
            
$this->log('Выполнение запросов: '$count);
            
$this->error mysqli_error($this->db);
            return 
$this->result;
        }
        
        public function 
query($query$free false)
        {
            if (
$this->db == null)
            {
                
$this->connect();
            }

            
$this->timer microtime(1);
            
$result mysqli_query($this->db$query);
            
$this->log('Выполнение запроса: '.$query);
            
$this->error mysqli_error($this->db);
            
$this->queries++;

            if (
$free)
                
mysqli_free_result($result);
            else
                
$this->result $result;

            if (!empty(
$this->error))
            {
                
mysqli_query($this->db"
                    INSERT INTO `errors`
                    (`user`, `time`, `user_agent`, `ip`, `desc`, `type`, `url`) VALUES 
                    ('"
.Core::$user_id."', '".time()."', '".my_esc($_SERVER['HTTP_USER_AGENT'], true)."', '".my_esc($_SERVER['REMOTE_ADDR'], true)."', '".my_esc($this->error)."', 'mysql', '".my_esc($_SERVER['REQUEST_URI'], true)."');");
                
$this->error null;
            }

            return 
$this;
        }

        public function 
esc($str)
        {
            if (
$this->db == null)
            {
                
$this->connect();
            }
            return 
mysqli_real_escape_string($this->db$str);
        }
    }
    
    return new 
My_sqli($set);
Онлайн: 2
Реклама