PDOでデータベース接続

久々にPHP触った。
それで、DBへの接続とかいつも通りに

<?php
mysql_connect("LOCALHOST", "ROOT", "");
mysql_select_db("DB_NAME");
mysql_query("QUERY");
?>

こんな感じか、もしくはmysqliなんちゃらを使っていたわけですが、
最近はどーやら違うらしい。
それが、PDO(php database object)らしい。

PDO

メリットとしては
・データベースに依存しない
・処理が早い(らしい)
・2回目の発行はキャッシュが効き早い

PHP5から標準になってるらしいから、かなり前からあったはずなのに
全然知らなかった。
技術書ほとんどmysql関数だったし。

使い方

これで接続。(MySQLの場合)

<?php
  $dsn      = "mysql:dbname=DATABASE_NAME;host=LOCALHOST";
  $user     = "USER_NAME";
  $password = "DATABASE_PASSWORD";

  try
  {
      $pdo = new PDO($dsn, $user, $password);
  }
  catch(PDOException $e)
  {
      exit("データベースに接続できませんでした".$e->getMessage());
  }    
?>

クエリー生成、発行

prepareで準備。
必要であればパラメータをbindして
executeで発行。

<?php
  $stmt = $pdo->prepare(
     "SELECT *
      FROM   user
      WHERE  name  = ?
      AND    email = ?"
  );

  $stmt->bindParam(1, $name, PDO::PARAM_STR);
  $stmt->bindParam(2, $email, PDO::PARAM_STR);
  
  $stmt->execute();
?>

取り出し

<?php
  while($data = $stmt->fetch(PDO::FETCH_ASSOC)){
    //$data handle
  }
?>

これで、ひと通りの処理は可能。
これから使うデータベースがMySQLだけとは限らないから
もう少し、勉強してみよう。

他にも、練習用で使ったスクリプトをgitに置いたんで見てください
https://github.com/naoto0822/PDO

nayamagu