2014-05-08 2 views
1

다음 mysqli 연결이 있습니다. 쿼리 인코딩을 uft-8로 변경하려면 어떻게해야합니까? 키릴 문자 결과를 시각화하면 그들은 ???????와 같이 표시됩니다.MySQLi는 utf-8로 문자를 설정합니다.

mysql_query ("SET NAMES UTF8")와 같은 것이 필요합니다. 하지만 올바른 구문을 잘 모르겠습니다.

아이디어가 있으십니까? 감사.

<?php 
class db_result 
{ 
    private $handler; 

    public function __construct($query, $data) 
    { 
     foreach($data as $value) 
     { 
      $query = preg_replace('/\?/', '"'.db::quote($value).'"', $query, 1); 
     } 

     $this->handler = db::$handler->query($query); 
    } 

    public function fetch() 
    { 
     return $this->handler->fetch_assoc(); 
    } 

    public function fetchColumn() 
    { 
     $row = $this->handler->fetch_array(); 

     return $row?$row[0]:false; 
    } 
} 

abstract class db 
{ 
    public static $handler; 

    public static function init($settings) 
    { 
     self::$handler = new mysqli($settings['host'], $settings['user'], $settings['password'], $settings['db_name']); 

     return !self::$handler->connect_errno; 
    } 

    public static function query($query, $data=array()) 
    { 
     return new db_result($query, (array) $data); 
    } 

    public static function last_id() 
    { 
     return self::$handler->insert_id; 
    } 

    public static function quote($string) 
    { 
     return self::$handler->escape_string($string); 
    } 
} 
+0

자신의 데이터베이스 추상화 계층을 구현하려고하지 마십시오. 여전히 SQL 인젝션에 취약합니다. – Gumbo

+0

죄송합니다. mysqli를 처음 사용했습니다. 설명해 주시겠습니까? – webtech

+0

db_result 클래스 생성자는 위치 표시자가 작성자에서 왔는지 또는 매개 변수로 삽입되었는지를 인식 할 수 없으므로 결함이 있습니다. – Gumbo

답변