但如何检查哪一列已被修改? 例如,在我的表中有以下列:id/name/age 我们有一个记录:1/woton/18 如果我发了一封信: UPDATE mytable SET name = 'Woton', age = '20' WHERE id = '1' 只有“年龄”字段已更改。我怎样才能确定这一点?
$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);
2条答案
按热度按时间siotufzp1#
不能直接从查询结果中获取更新的列。
它可以从一些php查询中获得。首先,我们必须从数据库中选择要在数组变量中更新的行。然后对同一行运行更新查询。
最后,从新数组变量的select query中从数据库中获取相同的行。
最后我们得到两个数组。
我们可以使用array\u diff\u assoc php函数获得更新的列。
请参见下面的代码。
oogrdqng2#
另一个注意事项是:如果在数据库中启用了querylog,那么您(或者您的php或python脚本)可以很容易地看到/读取内容的哪个部分已经更新,甚至可以监视数据库。
好消息是,甚至可以针对哪个表、哪个查询等。