php - PHP 中的 MySQL 更新查询并返回多个 id

标签 php mysql sql sql-update

我想执行一个 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 没有其他数据库支持的 OUTPUTRETURNING 子句。您可以通过在 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/

相关文章:

php - 如何在php中比较两个没有年份的日期?

javascript - HTML图片上传导致其他表单数据丢失

javascript - 如何在 Laravel 中为可拖动列实现 AJAX

mysql - 如何使用 R 将数据帧中的数据插入 MySQL 表中的选定列

mysql - 国家/城市/新闻的数据库架构

sql - 如何检查 XML 在 SQL 中是否有值(value)?

php - 运行 PHP 脚本(目标隐藏)但链接到 PDF(未隐藏)

php - HTML - 更改\更新页面内容而不刷新\重新加载页面

mysql - 如何执行受同一个表中的值限制的 mysql 查询?

mysql - mysql中按列名和数字分组的定义行为是什么