我有以下 mysqli 连接。如何将查询编码更改为 uft-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);
}
}
最佳答案
你可以像这样使用 mysqli::set_charset:
self::$handler->set_charset("utf8");
关于php - MySQLi 将字符设置为 utf-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23552615/