如何检查数据库是否更新/修改/更改?

8yparm6h  于 2021-06-25  发布在  Mysql
关注(0)|答案(3)|浏览(1286)

这是我的数据库

这是我的php代码,用于从表中获取数据

while($row = mysqli_fetch_array($result))
{
    $user_id =  $row['id']; 
    $sql = "SELECT id, ScheduleDate, StartTime,Endtime, Hours,Employeeid 
    FROM empdet WHERE Employeeid ='".$user_id."' ";
    $result = $con->query($sql);     
    if ($result->num_rows > 0) 
    {
    // output data of each row
    while($row = $result->fetch_assoc()) 
        {
        $id=$row["id"]. 
        $date=$row["ScheduleDate"]; 
        $start=$row["StartTime"]; 
        $end=$row["Endtime"];
        $hour=$row["Hours"];
        $Employeeid=$row["Employeeid"];
        list($year,$month,$day) = split("-",$date);
        $data[] = array("year"=>$year,
                        "month"=>$month,
                        "day"=>$day,
                        "StartTime"=>$start,
                        "Endtime"=>$end,
                        "Hours"=>$hour );   
        }
            $response = $data;
    }
    else
        {
        $data=1;
        $response = $data;
        }

我的问题是如何找到数据库是否被修改/更改/更新?
在用户表中,如果我将“2018-12-01”的开始时间从下午2:00更改为下午3:00,则应在echo中通知我,因为“2018-12-01”已被修改。
有人能建议如何使用php来实现这一点吗?

sg2wtvxw

sg2wtvxw1#

你可以利用 timestamp 数据库中的列类型,当设置为使用自动更新时,将指示记录已更新。

alter table `empdet`
    add column `timestamp` timestamp null default current_timestamp on update current_timestamp after `Employeeid`;

然后可以更改查询以确定记录是否已更新

select `id`, `scheduledate`, `starttime`, `endtime`, `hours`, `employeeid`,
case 
    when `timestamp` is not null then
        true
    else
        false
end as 'updated'
from `empdet` where `employeeid` ='".$user_id."';

但是,从原始代码看,似乎存在嵌套循环,它们都试图处理查询结果变量 $result 使用内部查询重新分配此变量。由于外循环为内循环提供了一个id,所以执行连接可能更有意义,但是如果没有看到前面的代码,不知道原始查询是什么,就很难具体化。

lymgl2op

lymgl2op2#

您可以使用此查询创建带有时间戳的列

ALTER TABLE `table_name` ADD `time_stamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `column_name`;

时间戳创建数据输入时的自动时间,以便您可以获取数据的最后时间并 checkout 最大时间戳

zf9nrax1

zf9nrax13#

int mysql\u impacted\u rows([resource$link\u identifier=null])在成功时返回受影响的行数,如果上次查询失败,则返回-1。
看到了吗http://php.net/manual/en/function.mysql-affected-rows.php

相关问题