データベース操作はPDOで
2008/09/20 | PDO
最近の流行はPDOらしい。ということで今後はPDOを使うことにした。というのもZend_FrameworkでもPDO推奨らしいから。
PDOのマニュアルを見ると、プリペアードステートメントを使うことが基本のように見える。もちろんそのほうが、SQLインジェクションに悩まされることもないのだから当たり前といえば当たり前。これを機会に自分もそういう方向性で作業を進めることにする。でももうこれでPHP4には戻れない(戻るつもりもないけれど)。
とりあえず自分用に最低限のサンプルをメモしておく。
- $pdo=new PDO(“mysql:host=localhost; dbname=myDB”,”user”,”password”);
- $sql=’SELECT * FROM samples';
- $stmt=$pdo->prepare($sql);
- $stmt->execute();
- while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
- var_dump($row);
- }
1行目でデータベースに接続してPDOオブジェクトの作成。DSNがちょっと今までと違うので注意が必要。2行目でSQLを用意して、3行目でprepareしているのだが、こんな簡単なSQLならprepareせずに直接queryメソッドを使うのもありだろう。prepareすると、その返り値はオブジェクトになっていて、以降そのオブジェクト(PDOStatementオブジェクト)に対して処理することになる。4行目でprepareしたSQL文を実行する。本来ならSQL文に「?」などのパラメータを使って値を格納する「箱」を用意しておき、3行目と4行目の間でbindParamなどを使って、それぞれの箱に値を代入して、それからSQLを実行することになる。実行結果はfetchメソッドを使って1行ずつ処理、ということだ。
特に難しいことはない。ただ今まで使っていたものに対して、汎用性を持たせて作りこむのが面倒だ。