Php 如何在mysql中维护当前记录和以前记录

Php 如何在mysql中维护当前记录和以前记录,php,mysql,Php,Mysql,嗨,任何人,请帮助我有一个联系人表,我可以在其中插入,删除,修改数据库使用PHP网页…但只有当前的变化将被更新到数据库。我想要的是如何维护数据库的历史记录。。。 有没有关于使用(PHP/MYSQL)的教程。 我尝试为患者创建MySQL表的版本。。。如何进一步进行 CREATE TABLE IF NOT EXISTS `contact` ( `name` varchar(30) NOT NULL, `phone` varchar(12) NOT NULL, `mobile` varc

嗨,任何人,请帮助我有一个联系人表,我可以在其中插入,删除,修改数据库使用PHP网页…但只有当前的变化将被更新到数据库。我想要的是如何维护数据库的历史记录。。。 有没有关于使用(PHP/MYSQL)的教程。 我尝试为患者创建MySQL表的版本。。。如何进一步进行

 CREATE TABLE IF NOT EXISTS `contact` (
  `name` varchar(30) NOT NULL,
  `phone` varchar(12) NOT NULL,
  `mobile` varchar(12) NOT NULL,
  `email` varchar(30) NOT NULL,
  `address` text NOT NULL,
  `conid` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`conid`)
  ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; # MySQL returned an empty result set (i.e. zero rows).

   CREATE TABLE IF NOT EXISTS `contactversion` (
   `name` varchar(30) NOT NULL,
   `phone` varchar(12) NOT NULL,
   `mobile` varchar(12) NOT NULL,
   `email` varchar(30) NOT NULL,
   `address` text NOT NULL,
   `conid` int(11) NOT NULL,
   `revision_id` int(11) AUTO_INCREMENT,
    type ENUM('INSERT', 'UPDATE', 'DELETE') NOT NULL,
   `change_time` DEFAULT current_timestamp,
    PRIMARY KEY (`revision_id`)
 );

下一步要做什么…

当运行对联系人的查询时,只需在获取当前联系人并将其复制到修订表之前运行此命令即可

"INSERT INTO 
    contactversion (name,phone,mobile,email,address,conid,type) 
    SELECT 
        name,phone,mobile,email,address,conid,'".$type."' as type 
    FROM contact 
    WHERE conid='".$conid."'"
这两个表要求相同,contactversion的类型和更改时间为additionnal last列


显然,此查询应该在更新和删除联系人表之前运行,但在插入之后运行。如果您正在更新与另一个WHERE子句的多个联系人,而不是CONID,那么您将要考虑在变量的WINDOWS语句中使用WHERE语句来在INSERT的SELECT和UPDATE/DELETER/P>>P>中使用它,同时创建CONTACTS版本表,确保CONID不应该是主键并且自动递增。我希望这是造成问题的原因。

感谢您的回复……我的contactversion表中是否有错误?是否有相关示例……在使用Insert命令后,我的数据库contactversion没有更新。很抱歉,我错误地使用了select语句中的Insert。现在应该修复此问题。查询分析错误中出现sysntax错误:语法错误,意外的T_LNUMBER…尝试过快。。。对不起,这应该可以解决吗?