我想执行一个 mysql 更新查询,然后获取在更改中受到影响的 ID 数组。
这是我的更新查询
mysql_query("UPDATE table SET deleted='1' WHERE id='$id' OR foo='$foo' OR bar='$bar'");
我知道我可以做这样的事情来从 INSERT 查询中获取创建的 ID
mysql_query("INSERT INTO table (id,foo,bar) VALUES ('$id','$foo','$bar')");
$newid = mysql_insert_id();
最佳答案
我认为 MySQL 没有其他数据库支持的 OUTPUT
或 RETURNING
子句。您可以通过在 update
之前运行 select
来获取 id
的列表:
create table temp_table ids_to_update as
SELECT id
FROM table
WHERE (deleted <> '1' or deleted is null) and *id='$id' OR foo='$foo' OR bar='$bar');
请注意,当值未更改时,MySQL 不会进行更新。因此,第一个条件 -- 您可能认为重要也可能不重要。
然后,为了确保完整性(在发生更改数据的干预事务的情况下),您可以:
update table t join
temp_table tt
on t.id = tt.id
set deleted = '1';
您也可以将两个查询包装在一个事务中,但我认为使用临时表来存储 id
可能更容易。
关于php - PHP 中的 MySQL 更新查询并返回多个 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25201782/