0

假设我有一个非常基本的更新查询:

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

我用 PDO 准备这个,我可以将“列”列设置为任何值。很好,这很好用。

我可以很容易地使用这个准备好的语句将列设置为特定值:

 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

您可以通过循环使用它:

$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 回答
0

我认为这里没有问题。
为什么您不能在需要时准备并执行以下查询?

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

和这个

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

什么时候需要减去?

您是否有 [不是虚构的,而是基于真实生活的] 案例可以让您解决问题吗?
很确定有一个优雅的解决方案

于 2013-03-07T14:22:59.933 回答