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;");

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

やったね

07:22

昨日は札幌でもカテーテル・インターベンションで働きました。その後は、皆で誕生日を祝って頂きました。正直この歳になるとあまり嬉しくありませんが、それでも皆が祝って下さると、何となく嬉しくもなります。単純ですね僕は、

例によって朝早く起床し、ずっと気になっていたこと、それは今までPHPプログラムたくさん書いてきたけど、ずっとずっと、native PHPというPHP4.0の頃の古い文法に従って書いてきました。つまり、Database接続なども、そのような古い書き方をしてきたのです。何時までもこんなではいけない、とずっと思ってきたのですが、何しろ頭が固くなっているので、なかなか新しい世界に踏み込めなかったのです。

それを今朝思い切ってやりました。

PEARにするか、PDDにするか悩み、少し調べたところ、PHP5.1以降は圧倒的にPDOが優れているようですので、PDOにすることにしました。

テストプログラムをまずはlocal (XAMPP)で走らせ、それから実際にuploadしたところ、見事走りました。これで大丈夫です。危ないのでそのプログラムサーバーからすぐに消しました。

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