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

2007.10.26 Author: えす

引き続きPDO関数について説明します。
今回は、SQL実行後のデータ取得を中心に簡単に紹介します。

実行結果の取得
結果の取得には「 fetch 」、「 fetchAll 」を使用します。

・fetchの場合
    1行単位で結果を取得できます。


$sql = $db->prepare("SELECT * FROM t_user WHERE user_id = ?");
$arg = array('1');

if (! $sql->execute($arg)) {
die("Failed");
}
var_dump($sql->fetch());

==結果==
[user_id] => 1
[0]       => 1
[name]    => えす
[1]       => えす

    引数にて値の取得方法を指定できます。


if (! $sql->execute($arg)) {
die("Failed");
}
var_dump($sql->fetch(PDO::FETCH_ASSOC));

==結果==
[user_id] => 1
[name]    => えす
FETCH_ASSOC配列の添字をカラム名で返す
FETCH_BOTH(デフォルト)配列の添字をカラム名とカラム番号で返す
FETCH_NUM配列の添字をカラム番号で返す
FETCH_OBJ配列をオブジェクトとして返す


    「 setFetchMode 」でも設定できます。


$sql = $db->prepare("SELECT * FROM t_user");

$sql->setFetchMode(PDO::FETCH_ASSOC);

・fetchAllの場合
    複数行の結果を、連想配列で取得できます。

$sql  = $db->prepare("SELECT * FROM t_user");

if (! $sql->execute()) {
die("Failed");
}
var_dump($sql->fetchAll(PDO::FETCH_ASSOC));

==結果==
[0] => Array
    (
      [user_id] => 1
      [name] => えす
    )
[1] => Array
    (
      [user_id] => 2
      [name] => たわば
    )


また、「 PDO::query 」を使用することで、SQLの実行結果をオブジェクトとして取得することもできます。

$sql = "SELECT user_id, name FROM t_user";

foreach ($db->query($sql) as $v) {
echo "user_id:{$v['user_id']} name:{$v['name']}
";
}

トランザクション

sqliteでもトランザクションは利用できるようです。

// トランザクション開始
$db->beginTransaction();

$sql = $db->prepare("UPDATE t_user SET name = 'えすえす' WHERE user_id = 1");

if (! $sql->execute()) {
// ロールバック
$db->rollBack();
die("Failed");
}

// コミット
$db->commit();




次回は、カラムを変数にバインドする方法について紹介する予定です。


えす

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