В чем ошибка при создании класса для работы с mysqli

class db
{

    var $query_num = 0;
    var $query_id = false;
    
    function __construct() {

        $this->db_id = @mysqli_connect('localhost', 'user', 'pass', 'baza');

        mysqli_set_charset ($this->db_id , "utf8");
                
        $this->sql_mode();

    }

    function query($query)
    {
  
        if(!$this->db_id)
            $this->db_id = @mysqli_connect('localhost', 'user', 'pass', 'baza');    

        $this->query_id = mysqli_query($this->db_id, $query);
        
        $this->query_num ++;

        return $this->query_id;
    }
    
    function get_row()
    {
        return mysqli_fetch_assoc($this->query_id);
    }

    function get_array()
    {
        return mysqli_fetch_array($this->query_id);
    }
    
    function insert_id()
    {
        return mysqli_insert_id($this->db_id);
    }

    function close()
    {
        @mysqli_close($this->db_id);
    }

    function sql_mode()
    {

        $res = $this->query( "SELECT @@SESSION.sql_mode" );
        $this->query_num --;
        $row = $this->get_array();
        
        if (!$row[0]) return;
        
        $modes_array = explode( ',', $row[0] );
        $modes_array = array_change_key_case( $modes_array, CASE_UPPER );

        foreach ($modes_array as $key => $value)
            if (in_array( $value, ['STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'ONLY_FULL_GROUP_BY', 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE', 'TRADITIONAL'])) 
                unset( $modes_array[ $key ] );
                
        $mode_list = implode(',', $modes_array);

        if($row[0] != $mode_list) {
            $this->query( "SET SESSION sql_mode='{$mode_list}'" );
            $this->query_num --;
        }
        
    }
    
}

$db = new db;

Не понимаю, как выполнить таким образом. Чтобы подключение работала при подгрузке класса. То есть перенести в конструктор?

Убрать из

function query($query)

Строчку

$this->db_id = @mysqli_connect('localhost', 'user', 'pass', 'baza');

Ответы (0 шт):