#php #codeigniter
#php #codeigniter
Вопрос:
Выполняет
mysql_query('SET NAMES `utf8`;', $link);
это то же самое, что
$db['default']['char_set'] = 'utf8';
или
$db['default']['dbcollat'] = 'utf8_general_ci';
в «applicationconfigdatabase.php » на Codeigniter? Если нет, как я могу это сделать в Codeigniter?
Ответ №1:
Если вы заглянете в драйвер базы данных CI, вы увидите, что функция, устанавливающая набор символов и параметры сортировки, вызывается с db_set_charset($charset, $collation)
И при дальнейшем изучении этой функции будет показана эта функция (из драйвера mysqli):
function _db_set_charset($charset, $collation)
{
static $use_set_names;
if ( ! isset($use_set_names))
{
// mysqli_set_charset() requires MySQL >= 5.0.7, use SET NAMES as fallback
$use_set_names = (version_compare(mysqli_get_server_info($this->conn_id), '5.0.7', '>=')) ? FALSE : TRUE;
}
if ($use_set_names)
{
return @mysqli_query($this->conn_id, "SET NAMES '".$this->escape_str($charset)."' COLLATE '".$this->escape_str($collation)."'");
}
else
{
return @mysqli_set_charset($this->conn_id, $charset);
}
}
По сути, это означает, что если вы используете MySQL 5.0.7 или новее, вместо «SET NAMES» используется mysqli_set_charset() .
Если вам нужно изменить это поведение, я предлагаю вам создать свой собственный драйвер базы данных.