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