gpt4 book ai didi

PHP PDO,连接持续时无法设置名称?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:04 25 4
gpt4 key购买 nike

这是我的 PDO 类(class)的一部分。我需要将 utf-8 用于希伯来语语言,但是当我将 ATTR_PERSISTENT 设置为 true 时,输出文本将显示为 ?? ???? 如果我将 ATTR_PERSISTENT 切换为 false,输出将是正确的。

public function __construct() {
// Set DSN
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;
// Set options
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_PERSISTENT => true
);
// Create a new PDO instanace
try {
$this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
}
// Catch any errors
catch (PDOException $e) {
$this->error = $e->getMessage();
}
}

是否有冲突:

PDO::MYSQL_ATTR_INIT_COMMAND =>  'SET NAMES utf8'

和:

PDO::ATTR_PERSISTENT => true

最佳答案

我能找到答案 here .

在 DSN 中设置它是唯一正确的方法,所以我将代码更改为:

 public function __construct() {
// Set DSN
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname .';charset=utf8';
// Set options
$options = array(
//PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_PERSISTENT => true
);
// Create a new PDO instanace
try {
$this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
}
// Catch any errors
catch (PDOException $e) {
$this->error = $e->getMessage();
}
}

现在输出是正确的。

关于PHP PDO,连接持续时无法设置名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32830149/

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