Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL:如何获取上次更新的更改_Php_Mysql - Fatal编程技术网

Php MySQL:如何获取上次更新的更改

Php MySQL:如何获取上次更新的更改,php,mysql,Php,Mysql,我正在使用MySQL和PHP开发一个数据库应用程序。目前,我正在尝试获取上次更新引起的更改。我解决这个问题的第一个方法是 使用SELECT获取“旧”状态 使用更新进行更改 使用SELECT获取“新”状态 将数组与php进行比较 这是三个mysql连接 有没有办法缩短这个时间?让我告诉你我是如何做到的 当我更新一行时,首先我得到我要更新的行,我称它们为活动记录。然后,我将活动记录的每一列与表单字段进行比较。这就是我知道哪一列发生了变化的原因 如果您想存储更改的列,请创建如下所示的history

我正在使用MySQL和PHP开发一个数据库应用程序。目前,我正在尝试获取上次更新引起的更改。我解决这个问题的第一个方法是

  • 使用SELECT获取“旧”状态
  • 使用更新进行更改
  • 使用SELECT获取“新”状态
  • 将数组与php进行比较
这是三个mysql连接


有没有办法缩短这个时间?

让我告诉你我是如何做到的

当我更新一行时,首先我得到我要更新的行,我称它们为
活动记录
。然后,我将
活动记录的每一列与表单字段进行比较。这就是我知道哪一列发生了变化的原因

如果您想存储更改的列,请创建如下所示的
history
表:

id        (for primary key)
tablename (which table i'm updating)
recordid  (which row i'm updating)
column    (which columns has been changed)
oldvalue  (active record value)
newvalue  (form value-updated value)
date      (obvious)
user      (who did this change)
在此之后,您可以利用自己的想象力来设计您想要使用的结构。

您可以执行一项操作,将记录的整个副本推送到一个历史记录表中,该历史记录表还包含您希望存储的其他状态数据(更新日期、用户等)

这样,您将有一个完整的修订历史记录,记录了发生了什么,并且应该透明地进行。唯一需要记住的是,您应该从历史记录表中删除任何唯一的约束


希望这能有所帮助。

您可以使用以下使用变量的技巧:

update table set 
col=(@oldValue:=col),col=newValue
where id=1234;
select @oldValue;

在本地加载表单时存储原始状态,然后在本地比较更新中发送的内容?没有理由去爱MySql,因为你基本上已经在内存中有了想要的“新”状态,你至少可以保存第二次选择。只要您的更新没有报告任何错误,您就可以非常依赖这样一个事实,即数据库状态将是您认为的状态。更确切地说,最好知道您计划如何处理该增量。您只需要确定有多少行受到影响,还是需要进行详细的数据比较?