2012-02-16
フーッ
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;");
を追加したらばいっぺんに解決しました。
やったね
昨日は札幌でもカテーテル・インターベンションで働きました。その後は、皆で誕生日を祝って頂きました。正直この歳になるとあまり嬉しくありませんが、それでも皆が祝って下さると、何となく嬉しくもなります。単純ですね僕は、
例によって朝早く起床し、ずっと気になっていたこと、それは今までPHPでプログラムたくさん書いてきたけど、ずっとずっと、native PHPというPHP4.0の頃の古い文法に従って書いてきました。つまり、Database接続なども、そのような古い書き方をしてきたのです。何時までもこんなではいけない、とずっと思ってきたのですが、何しろ頭が固くなっているので、なかなか新しい世界に踏み込めなかったのです。
それを今朝思い切ってやりました。
PEARにするか、PDDにするか悩み、少し調べたところ、PHP5.1以降は圧倒的にPDOが優れているようですので、PDOにすることにしました。
テストプログラムをまずはlocal (XAMPP)で走らせ、それから実際にuploadしたところ、見事走りました。これで大丈夫です。危ないのでそのプログラムはサーバーからすぐに消しました。
コメントを書く
トラックバック - http://d.hatena.ne.jp/Dr_Radialist/20120216
