0

非常に基本的な更新クエリがあるとします。

$sql = 'UPDATE `table` SET column = :value WHERE id = :id';

これを PDO で準備し、列 "column" を任意の値に設定できます。良いこれはうまくいきます。

この準備済みステートメントを使用して、列を特定の値に設定するのは非常に簡単です。

 UPDATE `table` SET column = 12 WHERE id = 123

ただし、クエリを実行したい場合:

 'UPDATE `table` SET column = column + 1 WHERE id = 123

これは、同じ準備済みステートメントを使用して可能ですか? 列の値がどのように計算されるか正確にはわからないため、準備されたステートメントを使用する価値はおそらくないため、残念です。

例: $stmt->execute(array(':value' => 'column + 1', ':id' => 123));

4

2 に答える 2

0

ここでは問題ありません。
必要なときに次のクエリを準備して実行できないのはなぜですか?

UPDATE `table` SET column = column + 1 WHERE id = ?

そしてこれ

UPDATE `table` SET column = column - 1 WHERE id = ?

あなたが引く必要があるとき?

[架空ではなく、実際の生活に基づいた]ケースがありますか?
エレガントな解決策があることはかなり確かです

于 2013-03-07T14:22:59.933 に答える
0

ループを介して使用できます:

$column = 12;
$params = array(':value' => $column, ':id' => 123);

for ($i = 1; $i <= 10; $i++) {
    $params[':value'] = '' . $column + $i; // string, not integer!

    $stmt->execute($params);
}
于 2013-03-07T13:36:47.107 に答える