gpt4 book ai didi

php - 如何在mysql中维护当前和以前的记录

转载 作者:行者123 更新时间:2023-11-30 23:49:38 24 4
gpt4 key购买 nike

大家好,请帮助我有一个联系人表,我可以在其中使用 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 的 type 和 change_time 作为最后一列。

很明显,这个查询应该在联系人表的 UPDATE 和 DELETE 之前,但在 INSERT 之后运行。如果您使用另一个 where 子句而不是 conid 更新多个联系人,您需要考虑在变量中构建 where 语句以在 INSERT 的 SELECT 和 UPDATE/DELETE 中使用它

关于php - 如何在mysql中维护当前和以前的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18672054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com