気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. PHPエラーの原因と対策
  2. 7 view

PHP 5.3.6以降(PDO)でMYSQLの文字化け対策(charsetを指定する)

次のコードは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>
文字化けが解消される

文字化けが解消される

PHPエラーの原因と対策の最近記事

  1. PHPの関数や変数の前にあるアットマークの意味は?

  2. 「http:// wrapper is disabled in the server co…

  3. php.iniの場所

  4. 「Warning: array_key_exists()」と表示されるとき

  5. 「Warning: A non-numeric value encountered」と表示…

関連記事

PAGE TOP