使用一个查询更新多行

Ale*_*lex 4 php mysql pdo

如何一次更新数百行?

喜欢: UPDATE table SET a = ? WHERE b = ? AND c = 1

但对于许多行.该?参数是数组...

我读了这个答案,但它使用CASE而我认为我不能这样做......


现在我有这样的事情:

foreach($values as $key => $value)
  $res = $pdo->prepare('UPDATE table SET a = ? WHERE b = ? AND c = 1');
  $res->execute(array($value, $key));
}
Run Code Online (Sandbox Code Playgroud)

out*_*tis 7

要在一次查询运行中执行此操作,您需要使用a CASE以编程方式组装参数.SQL不支持可变参数预处理语句,只能参数化简单值.

或者,定义一个语句,一次只获取一行数据,然后循环运行查询.重复执行是指如何将准备语句设计用于此类情况.

try {
    $query = $db->prepare('UPDATE table SET a = ? WHERE b = ? AND c = 1');
    foreach ($as as $i => $a) {
        $query->execute(array($a, $bs[$i]));
    }
} catch (PDOException $e) {
    ...
}
Run Code Online (Sandbox Code Playgroud)