1. ホーム
  2. php

[解決済み】PHP PDO: charset, set names?

2022-04-11 18:42:24

質問

以前、通常の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));

解決方法は?

接続文字列の中に、このようなものがあるはずです。

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

しかし、PHP 5.3.6 より前のバージョンでは、charset オプションは無視されます。古いバージョンの PHP を使用している場合は、このようにする必要があります。

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