MySQL更新查询在PHP和获得多个id返回


MySQL update query in PHP and get multiple ids returned

我想执行mysql UPDATE查询,然后获得在更改中受影响的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没有其他数据库支持的OUTPUTRETURNING子句。您可以通过在update:

之前运行select 来获得id s列表。
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 s可能更容易。