アプリ版:「スタンプのみでお礼する」機能のリリースについて

CGI(Perl5.8*)のDBIモジュールでのMysqlの質問です。

////////////////////////////////////////////
$sql = "
update `postageFee` set `aaa`=1,`bbb`=2 where `id`=1;
update `postageFee` set `aaa`=3,`bbb`=4 where `id`=5;
";
$result = $db->prepare("$sql");
$result->execute;
$result->finish;
////////////////////////////////////////////
上記のように複数行にわたるupdate文を一回のQueryで処理させたいのです。
上記のような方法で一回で処理はできないのでしょうか?どうしてもうまくいきません。
1行1行クエリーしないといけないのでしょうか?

よろしくお願いします。

A 回答 (1件)

> 上記のように複数行にわたるupdate文を一回のQueryで処理させたいのです。



それはできないです。

> 行1行クエリーしないといけないのでしょうか?

そういうことです。

ただ、1回、1回同じようなSQLを解析させるとオーバーヘッドが高くなるので、形が同じでリテラルだけが異なるようなSQLを何度も発行する必要がある場合はprepared statementというものがよく使われます。

すると、こんな感じになるでしょう。

$sql = "update postageFee set aaa=? ,bbb=? where id = ?";
$result= $dbh->prepare($sql);

$result->bind_param(1, 1);
$result->bind_param(2, 2);
$result->bind_param(3, 1);
$result->execute;

$result->bind_param(1, 3);
$result->bind_param(2, 4);
$result->bind_param(3, 5);
$result->execute;
    • good
    • 0
この回答へのお礼

早速の返信ありがとうございます。

やはり、一回ですべきなんですね。

助かりました。

お礼日時:2009/03/16 10:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!