Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQLi将字符设置为utf-8_Php_Mysql_Utf 8_Mysqli - Fatal编程技术网

Php MySQLi将字符设置为utf-8

Php MySQLi将字符设置为utf-8,php,mysql,utf-8,mysqli,Php,Mysql,Utf 8,Mysqli,我有以下mysqli连接。如何将查询编码更改为uft-8。当可视化西里尔语的结果时,他们会显示出类似的结果 我需要类似mysql_查询(“SET NAMES UTF8”);但我不确定语法是否正确 有什么想法吗?谢谢 <?php class db_result { private $handler; public function __construct($query, $data) { foreach($data as $value)

我有以下mysqli连接。如何将查询编码更改为uft-8。当可视化西里尔语的结果时,他们会显示出类似的结果

我需要类似mysql_查询(“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);
    }
}

您可以像这样使用mysqli::set\u字符集:

self::$handler->set_charset("utf8");

请不要尝试实现自己的数据库抽象层。您仍然容易受到SQL注入的攻击。很抱歉,我是mysqli新手。你能解释一下吗?你的db_结果类构造函数有缺陷,因为它无法识别占位符是来自作者还是由参数插入的。哦,太好了。谢谢:))