こんにちは、PDO 接続でアクセントを表示する際に問題があります。私はウェブ開発でphpを学んでおり、mysqlの古いphp接続を使用して開発を開始しました
function db_connect()
{
$result = new mysqli('localhost', 'database', 'password', 'user');
if (!$result)
return false;
return $result;
}
私のテーブルは latin1 と utf8 文字セットを使用しており、Web ページは正常に機能し、アクセント付きの単語が表示されます。
古い方法で動作するため、文字セットと照合が問題ないことはわかっています。しかし、PDO を使用しようとすると、アクセントのあるすべての単語が異なって表示されます。カテゴリ名を取得する例を次に示します
$db = database_connect();
$query = " select xxx from yyy where xxxyid = :xxxyid ";
$query_params = array(
':xxxyid' => $xxxyid
);
// Execute the query against the database
$query = $db->prepare($query);
$result = $query->execute($query_params);
if (!$result)
trigger_error('Query failed: ' . mysql_error(), E_USER_ERROR);
$num_xxx = $query->rowCount();
if ($num_xxxs == 0)
return false;
$row = $query->fetch();
return $row['name'];
私の接続はこのように設定されています
$db_options = array(
PDO::ATTR_EMULATE_PREPARES => false // important! use actual prepared statements (default: emulate prepared statements)
, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION // throw exceptions on errors (default: stay silent)
, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC // fetch associative arrays (default: mixed arrays)
);
$database = new PDO('mysql:host=server;dbname=dbname;charset=utf8', 'user', 'password', $db_options); // important! specify the character encoding in the DSN string, don't use SET NAMES
// create prepared statement with one parameter for the category ID
アクセント付きの文字を表示する方法を検索しようとしていますが、解決できません。