PDO
■PHPからMySQLにアクセス
最近PHPを使う時はいつもsymfonyを使ってるので、DBに接続したりSQLを投げるコードを直接書くことはなかったんだけど、つい最近、ほんのお遊びプログラムを作る時に、わざわざsymfonyを使うまでもないと思ったので、プレーンなPHPで書くことにした。
普通のPHPを使うのなんて久しぶりなので、最初はmysql_connectとかの昔ながらのやり方をやってたんだけど、それだとさすがに芸がないので他のやり方をすることにした。
■PDO
どうやら調べてみたら、ここ最近ではPDOを使う人が多いみたいなので自分もそうしてみることにした。CodeZineにPDOの記事が載ってたのでそれを見つつやってみる。PDOにしろ何にしろ、そもそも人間の労力を減らすための物なので、そんなに難しいわけがない。
・文字コード
で、次に引っかかったのが定番の文字コード。色々見てると例の
set names utf8
ってのを実行してる例が多かったけど、これって筋が悪いというかあまり美しくないって個人的には思う。で、調べている途中にこんなページが見付かった。
Shift JISの場合、set namesで文字コードを指定しても、PDOが文字コードを意識した作りになってないから(?)、SQLインジェクションが起こる可能性があるらしい。
でも、自分の場合はUTF-8なので、イマイチ綺麗ではないが、以下のようにして接続直後にset names utf8を実行することにして文字化けを回避。
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
なんか、こんなので悩むなら最初からフレームワークとか使った方が早かったかもしれない…