PHP PDO:在单个查询中进行多个UPDATE操作
PHP PDO:在单个查询中进行多个UPDATE操作
我试图通过一个单独的pdo语句来运行以下内容:\n
UPDATE `coin_price` SET `coin_id` = 1 WHERE coin_id = 1; UPDATE `coin_price` SET `coin_id` = 178 WHERE coin_id = 178;
\n但是我得到了以下异常:\n
\n您的SQL语法错误;请检查与您的MariaDB服务器版本相对应的手册,以查看在\'UPDATE `coin_price` SET `coin_id` = 178 WHERE coin_id = 178\'附近使用的正确语法。\n
\n我只是运行了以下代码:\n
$statement = $this->system[$location]["connection"]->prepare($sql); $statement->execute();
\n并且得到了一个异常。我尝试了绑定和不绑定的方式。\n我所做的事情是不可能的吗?\n注意:这两个查询分别通过PDO运行良好。
问题原因:PHP的PDO只能一次执行一个查询,不能同时执行多个查询。
解决方法:可以将多个UPDATE语句合并成一个查询,使用CASE语句来更新多个字段的值。
以下是合并多个UPDATE语句的示例代码:
UPDATE coin_price SET coin_id = CASE coin_id WHEN 1 THEN 1 WHEN 178 THEN 178 END, field1 = CASE coin_id WHEN 1 THEN 'value1' WHEN 178 THEN 'value2' END, field2 = CASE coin_id WHEN 1 THEN 'value3' WHEN 178 THEN 'value4' END WHERE coin_id IN (1, 178)
以上代码示例中,除了更新coin_id字段外,还更新了field1和field2字段的值。每个字段都使用了一个CASE表达式来分别赋予不同的值。
感谢您的回复。是否可以扩展这个方法来更新更多的字段?
是的,您可以指定多个列,每个列都可以包含一个CASE表达式来赋予相应的值。
参考重复的问题以获取示例代码。