检查在UPDATE查询中修改了哪些列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查在UPDATE查询中修改了哪些列相关的知识,希望对你有一定的参考价值。

当我们使用php更新mysql记录时,我们可以使用以下命令检查它是否有效:

$mysqli->affected_rows;

但是,如何检查哪个列已被修改?

例如,在我的表中有列:id / name / age

在记录中我们有数据:1 / Woton / 18

如果我发送:UPDATE mytable SET name = 'Woton', age = '20' WHERE id = '1'

只有年龄段发生了变化。我怎么能确定这个?

答案

您无法直接从查询结果中获取更新的列。

它可以从一些php查询中获取。首先,我们必须从数据库中选择要在数组变量中更新的行。然后运行同一行的更新查询。

最后从新数组变量中的select查询中获取数据库中的相同行。

最后我们得到两个数组。

我们可以使用array_diff_assoc php函数获取更新的列。

请参阅以下代码。

$sql = "SELECT *  from mytable where id=1 limit 1";
$prev = mysqli_fetch_assoc(mysqli_query($conn, $sql));

//Get the column data in the array. Before update.

$sql = "UPDATE mytable SET name = 'Woton', age = '20' WHERE id = '1'";
$conn->query($sql);

// Update data 

$sql = "SELECT *  from mytable where id=1 limit 1";
$updated = mysqli_fetch_assoc(mysqli_query($conn, $sql));

// Again run the select command to get updated data.

$UpdatedColumns=array_diff_assoc($updated,$prev);

以上是关于检查在UPDATE查询中修改了哪些列的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 学习第四篇

Day04- -e Oracle

数据库中updatetablesetwhere语句的作用

vb中如何实现对access数据库的数据添加、修改、删除

SQL 中UPDATE用法

MongoDB更新文档