Dr. Radialistからの便り

湘南鎌倉総合病院 心臓センター循環器科

2012-02-16

フーッ

08:25

PDOでラクチンDatabaseと思っていたら、何と文字化け!!!

それで以下のプログラムでテストしました


<?php

try {
   $pdo = new PDO("mysql:host=$db_host; dbname=$db_name","$db_user", "$db_password");
    $stmt = $pdo->query("SELECT * FROM dr_tbl");
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
        echo implode(", ", $row) ."<br />";
    }
} catch (PDOException $e){
    var_dump($e->getMessage());
}
$pdo = null;

// ここまでPDOでの処理

echo "***********************************************<br />";

// 以下はnative PHPでの処理

$link = mysql_connect($db_host, $db_user, $db_password);
if ($link === NULL) {
     die("MySQL connection failed");
}
mysql_select_db($db_name);
$result = mysql_query('set character set utf8');
$sql = "SELECT * FROM `dr_tbl`;";
$result = mysql_query($sql);	
while($row = mysql_fetch_assoc($result)){
   echo implode(", ", $row) ."<br />";
}

?>

そうすると、PDO部分では文字化け出力するのに、native部分では文字化けありません。

これはきっとUTF-8を改めてセットする必要があると考え調べると、ありましたね、やはり悩んだ方がおられましたここ

それで、PDO部分に

stmt = $pdo -> query("SET NAMES utf8;");

を追加したらばいっぺんに解決しました。

トラックバック - http://d.hatena.ne.jp/Dr_Radialist/20120216/1329348304