当我们使用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);