Это моя база данных
Это мой 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;
}
Мой вопрос заключается в том, как определить, изменена ли/изменена/обновлена база данных?
В таблице пользователей, если я изменил время начала с 14:00 до 15:00 от "2018-12-01", он должен уведомить меня об эхо, поскольку "2018-12-01" был изменен.
Может ли кто-нибудь предложить, как это сделать с PHP?
Вы можете использовать тип столбца 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
результата $result
а внутренний запрос повторно назначает эту переменную. Поскольку внешний цикл предоставляет идентификатор для внутреннего цикла, более разумным было бы заняться объединением, но было бы трудно быть конкретным, не видя предыдущего кода и не зная, что такое исходный запрос.
вы создаете столбец с меткой времени, используя этот запрос
ALTER TABLE 'table_name' ADD 'time_stamp' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER 'column_name';
timestamp создает автоматическое время, когда данные вводят, чтобы вы могли получить последнее время данных и checkout max timestamp
int mysql_affected_rows ([resource $ link_identifier = NULL]) Возвращает количество успешных удаленных строк и -1, если последний запрос не удался.
см. http://php.net/manual/en/function.mysql-affected-rows.php
mysql
API , а не mysqli
и во- вторых , что относится к INSERT, UPDATE, REPLACE or DELETE
операции
updated_at
?