Как проверить, что база данных обновлена / изменена / изменена?

0

Это моя база данных

Изображение 174551

Это мой 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?

  • 1
    Согласитесь с @apokryfos и как этот вопрос связан с android?
  • 2
    поддержание поля updated_at ?
Показать ещё 3 комментария
Теги:

3 ответа

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 результата $result а внутренний запрос повторно назначает эту переменную. Поскольку внешний цикл предоставляет идентификатор для внутреннего цикла, более разумным было бы заняться объединением, но было бы трудно быть конкретным, не видя предыдущего кода и не зная, что такое исходный запрос.

  • 0
    Спасибо, сэр, но я не хочу добавлять какие-либо колонны, есть ли другой способ сделать это, пожалуйста, предложите мне.
  • 0
    Загрузите набор записей в сеанс один раз и проверьте значения в сеансе по значениям из последнего запроса (tbh - не очень хороший вариант). Есть ли причина, по которой вы не можете добавить новый столбец?
Показать ещё 1 комментарий
0

вы создаете столбец с меткой времени, используя этот запрос

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

timestamp создает автоматическое время, когда данные вводят, чтобы вы могли получить последнее время данных и checkout max timestamp

0

int mysql_affected_rows ([resource $ link_identifier = NULL]) Возвращает количество успешных удаленных строк и -1, если последний запрос не удался.

см. http://php.net/manual/en/function.mysql-affected-rows.php

  • 0
    Во - первых , что для устаревшей mysql API , а не mysqli и во- вторых , что относится к INSERT, UPDATE, REPLACE or DELETE операции

Ещё вопросы

Сообщество Overcoder
Наверх
Меню