【PHP】PDO関数でSQLiteを使ってみた(1)

2007.10.10 Author: えす

PHPのPDO関数を使ってみました。
PHPマニュアルにも記載されていますが、サンプルと簡単にまとめたものを掲載します。

データベースにはSQLiteを使用しました。

【DB接続】
   PDOの引数に「 sqlite:データベースのパス 」を指定します。
   DBが存在しなかった場合は、指定したパスにDBを作成します。


if (! $db = new PDO("sqlite:test.db")) {
die("DB Connection Failed.");
}


【SQL実行】
   PDO::query でSQL文を実行できます。


$sql = "CREATE TABLE t_user(" .
"user_id integer PRIMARY KEY, " .
"name text NOT NULL, " .
"mail text" .
")";

if (! $db->query($sql)) {
echo "Failed";
}


【SQL文の値置き換え】
   PDO::prepare でSQL文の値を置き換えることもできます。
   下記のように実行することができます。


$sql = $db->prepare("INSERT INTO t_user(user_id, name) " .
"VALUES (:user_id, :name)");

$arg = array(':user_id' => 1,
':name' => "えす");

if (! $sql->execute($arg)) {
echo "Failed";
}

   また、「 :~ 」の形式ではなく「 ? 」を使用することもできます。
   その場合は下記のようになります。


$sql = $db->prepare("INSERT INTO t_user(user_id, name) " .
"VALUES (?, ?)");

$arg = array(2, "たわば");

if (! $sql->execute($arg)) {
echo "Failed";
}


【影響をうけた行数の取得】
   INSERT、UPDATE、DELETE文で影響をうけた行数を取得する場合、下記の方法で取得できます。


$sql = "DELETE FROM t_user WHERE user_id = 1";

// 影響をうけた行数が戻り値として返ってくる
echo $db->exec($sql);


   ※上記方法で「DELETE FROM t_user」を実行した時に戻り値がなぜか「 0 」となって
      しまいました。
      正しい値を取得したい場合には、下記の方法を実行してください。

$sql  = $db->prepare("DELETE FROM t_user WHERE " .
                      "user_id = :user_id");

$arg = array('user_id' => 1);

if (! $sql->execute($arg)) {
echo "Failed";
}

// 行数の取得
echo $sql->rowCount();


次回は引き続きPDO関数について記載します。


えす

名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ