Update multiple rows with one query

前端 未结 3 2028
孤独总比滥情好
孤独总比滥情好 2021-01-06 09:18

How can I update hundreds of rows at once?

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

but for many rows. The ? parameters a

3条回答
  •  佛祖请我去吃肉
    2021-01-06 09:54

    To do it in a single run of a query, you'd need to use a CASE and assemble the parameters programmatically. SQL doesn't support variadic prepared statements, and only simple values can be parameterized.

    Alternatively, define a statement to only take data for one row at a time and run the query in a loop. Repeated execution is how prepared statements are designed to be used for cases like this.

    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) {
        ...
    }
    

提交回复
热议问题