代码之家  ›  专栏  ›  技术社区  ›  Woton Sampaio

检查更新查询中修改了哪些列

  •  0
  • Woton Sampaio  · 技术社区  · 6 年前

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

    $mysqli->affected_rows;
    

    但如何检查哪一列已被修改?

    例如,在我的表中有以下列:

    如果我发了一封信: UPDATE mytable SET name = 'Woton', age = '20' WHERE id = '1'

    只有 年龄

    1 回复  |  直到 6 年前
        1
  •  2
  •   Gaurav Mourya    6 年前

    不能直接从查询结果中获取更新的列。

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

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

    我们可以使用array\u diff\u 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);
    
        2
  •  1
  •   Ritesh Aryal    4 年前

    另一个注意事项是:如果在数据库中启用了QueryLog,那么您(或者您的PHP或Python脚本)可以很容易地看到/读取内容的哪个部分已经更新,甚至可以监视数据库。

    好消息是,甚至可以针对哪个表、哪个查询等。