次のコードはMySQLのデータを一覧表示していますが、MySQL設定ファイル(my.iniまたはmy.cnf)に文字コードの定義をしていないなどの原因で、文字化けすることがあります。

<html>
<head>
<title>PDOを使用してデータを表示する</title>
</head>
<body>
<h3>PDOを使用してデータを表示する</h3>
<?php
// データベースに接続する
$dsn = "mysql:dbname=testdb;host=localhost;";
$conn = new PDO($dsn, "nisi", "qazxsw");

// データを取り出す
$sql = "SELECT id, nam, pre, ag FROM table1 ORDER BY id";
$stmt = $conn->prepare($sql);
$stmt->execute();

// 取り出したデータを表示する
echo "<table border=\"1\">";
while ($row = $stmt->fetch()) {
    echo "<tr>";
    echo "<td>".$row["id"]."</td>";
    echo "<td>".$row["nam"]."</td>";
    echo "<td>".$row["pre"]."</td>";
    echo "<td>".$row["ag"]."</td>";
    echo "</tr>";
}
echo "</table>";
?>
</body>
</html>
文字化けするデータ

文字化けするデータ

PHP 5.3.6以降では、接続文字列にcharsetを指定することで文字化けを回避することができます。

<html>
<head>
<title>PDOを使用してデータを表示する</title>
</head>
<body>
<h3>PDOを使用してデータを表示する</h3>
<?php
// データベースに接続する
$dsn = "mysql:dbname=testdb;host=localhost;charset=utf8;";
$conn = new PDO($dsn, "nisi", "qazxsw");

// データを取り出す
$sql = "SELECT id, nam, pre, ag FROM table1 ORDER BY id";
$stmt = $conn->prepare($sql);
$stmt->execute();

// 取り出したデータを表示する
echo "<table border=\"1\">";
while ($row = $stmt->fetch()) {
    echo "<tr>";
    echo "<td>".$row["id"]."</td>";
    echo "<td>".$row["nam"]."</td>";
    echo "<td>".$row["pre"]."</td>";
    echo "<td>".$row["ag"]."</td>";
    echo "</tr>";
}
echo "</table>";
?>
</body>
</html>
文字化けが解消される

文字化けが解消される

スポンサーリンク

こちらもどうぞ

こちらも参考にしてください

関連記事

phpMyAdmin

PHPサンプルコード

PHP全般

PHP関数

WordPress

エラーメッセージ

PHPの基礎が身に付いたかチェック!

PHP「直す力」養成ドリル
スポンサーリンク