2010年6月27日日曜日

SQLite(PDO)でトランザクション、初成功

sqliteのPDOで、トランザクションを使わずに複数のSQL文を実行したら,やたら遅いので、トランザクションを勉強し、うまくいったのでメモです。

$stmt=$conn->beginTransaction();
for($i=0;$i<12;$i++){
$stmt=$conn->prepare("insert into tests (test,test_jp)
values(:test,:test_jp)");
$stmt->bindParam(":test",$tests[$i]);
$stmt->bindParam(":test_jp",$tests_jp[$i]);
$stmt->execute();
}
$stmt=$conn->commit();

bindとか、ちょっと面倒だし、
まだ使いこなせていません。。。

また、書き方が分からず、
$stmt=$conn->execute();としていたら、エラーだったので、
$stmt->execute(); というようにしたらOKに。

一方、SQL文を登録するにはprepare()内で書くと良い様子。
そっちは、
$stmt=$conn->prepare("insert into 。。。");みたいに$conn->が必要のようですね。

 まだよく分からない。。

が、とりあえず動いてくれて良かった!

■追記:西沢直木氏の「SQLite入門 第2版」「PHP辞典 第2版」の両方を見て、やっと少し分かってきました。PDOに関する記述は少なめで,まだよく分かりませんが、汎用性を獲得できそうなので、是非習得したいところです。

0 件のコメント:

コメントを投稿