php.net、Stack Overflow、その他の信頼の情報源によると、PDO接続でUTF-8を設定する4つの異なる方法を見つけることができますが、どちらを選択するのが良いかを見つけることができません。
$pdo_db = 'mysql:host=localhost;dbname=local_db;charset=utf8'; // METHOD #1
$pdo_login = 'root';
$pdo_pass = 'localpass';
$db = new PDO($pdo_db, $pdo_login, $pdo_pass, array(
PDO::ATTR_ERRMODE => $localhost ? PDO::ERRMODE_EXCEPTION : PDO::ERRMODE_SILENT,
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', // METHOD #2
));
$db->exec('SET NAMES utf8'); // METHOD #3
$db->exec('SET CHARACTER SET utf8'); // METHOD #4
つまり、私が理解したのは、メソッド1はPHP 5.3以降でのみ機能し(ただし、少しバグがあるようです)、メソッド2はMySQL専用であるということです。方法3と4の違いはMySQLのことですが、どちらが優れているかはまだわかりません。また、PDO属性でSET NAMESを呼び出す方法はありますが、MySQLのみではありませんか?