PHP PDO:字符集,设置名称?

2022-08-30 06:23:14

我以前在正常的mysql_*连接中遇到过这种情况:

mysql_set_charset("utf8",$link);
mysql_query("SET NAMES 'UTF8'");

PDO 是否需要它?我应该在哪里拥有它?

$connect = new PDO("mysql:host=$host;dbname=$db", $user, $pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

答案 1

你的连接字符串中将包含它,如下所示:

"mysql:host=$host;dbname=$db;charset=utf8mb4"

但是,在 PHP 5.3.6 之前,字符集选项被忽略。如果您运行的是较旧版本的 PHP,则必须按如下方式操作:

$dbh = new PDO("mysql:host=$host;dbname=$db",  $user, $password);
$dbh->exec("set names utf8mb4");

答案 2

在 PHP 5.3.6 之前,字符集选项被忽略。如果您运行的是较旧版本的 PHP,则必须按如下方式操作:

<?php

    $dbh = new PDO("mysql:$connstr",  $user, $password);

    $dbh -> exec("set names utf8");

?>

推荐