gpt4 book ai didi

php - PDO UTF-8 编码问题?

转载 作者:行者123 更新时间:2023-11-29 03:49:07 25 4
gpt4 key购买 nike

我正在使用 PDO 连接到 MYSQL 数据库

数据库中的所有表都有utf8_unicode_ci排序规则

这是我的连接代码:

<?php
$mysql_username = "root";
$mysql_password = "";
$mysql_host = "localhost";
$mysql_database = "cms";

try
{
//connect
global $db;
$db = new PDO('mysql:dbname=' . $mysql_database . ';host=' . $mysql_host . ';charset=utf8;', $mysql_username, $mysql_password);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $ex)
{
die("Unable Connect To DataBase");
}
?>

在本地主机中,我没有编码问题,但是当我将源代码上传到主机时,我看到的是 ?????? 而不是字符?

最佳答案

这个:

$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');

完全没有意义。参见 http://php.net/manual/en/ref.pdo-mysql.php . MYSQL_ATTR_INIT_COMMAND 在连接建立后立即执行,不会晚。如果你在一个已经完全创建的 PDO 对象上设置它,那就太晚了,它永远不会执行。您需要将其传递给构造函数:

new PDO(..., ..., ..., array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'))

或者,如果您的 PHP 版本支持它,请将 charset=utf8 添加到 DSN。

关于php - PDO UTF-8 编码问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18496557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com