3

MySQL で非常に単純なセッション接続変数を設定しようとしていますが、何もしません。以下で実行されるクエリはエラーを引き起こしませんが、MySQL 接続の文字セットは変更されません。my.iniファイルの 'collat​​ion_server' と 'character_set_server' のデフォルト値をutf8mb4ではなくとして設定すると、latin1文字セットは になりますutf8mb4が、PHP スクリプトから接続文字セットを変更できないのはなぜでしょうか。

$pdo = new \PDO("mysql:host=localhost", "root", "");
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

$pdo->query("SET NAMES utf8mb4");

print_r($pdo->query("SHOW GLOBAL VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';")->fetchAll(PDO::FETCH_ASSOC));

このクエリは、SET NAMESステートメントが影響を与えなかったことを示しています。

4

2 に答える 2