【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システム開発・ネットワーク構築会社 コネクティボへ