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

问题描述 投票:0回答:1

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

$mysqli->affected_rows;

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

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

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

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

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

php mysql mysqli sql-update
1个回答
2
投票

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

它可以从一些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);
© www.soinside.com 2019 - 2024. All rights reserved.