这是我的数据库
这是我的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;
}
我的问题是如何查找数据库是否被修改/更改/更新?
在users表中,如果我将开始时间从" 2018-12-01"的下午2:00更改为下午3:00;它应该通过回声通知我作为" 2018-12-01"已被修改。
有人可以建议如何使用PHP吗?
答案 0 :(得分:0)
您可以使用数据库中的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,因此可能更有意义地进行连接 - 但如果没有看到前面的代码并且知道原始查询是什么,则很难具体。
答案 1 :(得分:0)
int mysql_affected_rows([resource $ link_identifier = NULL]) 成功时返回受影响的行数,如果上次查询失败,则返回-1。
请参阅http://php.net/manual/en/function.mysql-affected-rows.php
答案 2 :(得分:0)
使用此查询创建带时间戳的列
ALTER TABLE `table_name` ADD `time_stamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `column_name`;
时间戳创建数据输入时的自动时间,以便您可以获得数据的持续时间并结帐最大时间戳