Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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,简单的例子: ID NAME ----------- 1 Test 2 Test1 我将Test1更新为Test3 现在的结果是: ID NAME ---------- 1 Test 2 Test3 更新字段名后,我需要指定字段的上一个值Test1。是否有任何预定义函数可用?不在sql中,如果使用其他语言(如PHP)进行更新,则可以存储该值,然后进行更新,这样您仍然可以使用旧值。但正如有人在评论中提到的,一旦提交,数

简单的例子:

ID     NAME  
-----------   
1      Test  
2      Test1
我将Test1更新为Test3

现在的结果是:

ID    NAME  
----------  
1     Test  
2     Test3

更新字段名后,我需要指定字段的上一个值Test1。是否有任何预定义函数可用?

不在sql中,如果使用其他语言(如PHP)进行更新,则可以存储该值,然后进行更新,这样您仍然可以使用旧值。但正如有人在评论中提到的,一旦提交,数据就会丢失。

不是在sql中,如果您使用其他语言(如PHP)进行更新,您可以存储值,然后进行更新,这样您仍然可以使用旧值。但正如有人在评论中提到的,一旦提交,数据就会丢失。

我认为mysql没有这样的功能

查看mysql事务,并在提交事务之前尝试获取值

语法:

BEGIN TRANSACTION
...
END

我认为mysql没有这样的功能

查看mysql事务,并在提交事务之前尝试获取值

语法:

BEGIN TRANSACTION
...
END

如果您想永久访问上一个值,一个选项是通过向同一个表中添加一行“oldName”将其存储在数据库中。您甚至可以在名称发生更改时使用触发器对其进行系统备份:

DELIMITER $$
CREATE TRIGGER `backup_name` BEFORE UPDATE ON `table1`
FOR EACH ROW BEGIN
    IF NEW.name <> OLD.name THEN
    SET NEW.oldName = OLD.name;
    END IF
END$$

如果您想永久访问上一个值,一个选项是通过向同一个表中添加一行“oldName”将其存储在数据库中。您甚至可以在名称发生更改时使用触发器对其进行系统备份:

DELIMITER $$
CREATE TRIGGER `backup_name` BEFORE UPDATE ON `table1`
FOR EACH ROW BEGIN
    IF NEW.name <> OLD.name THEN
    SET NEW.oldName = OLD.name;
    END IF
END$$

一个混乱的答案包括添加一个名为LAST_NAME或类似名称的列:

UPDATE TABLE SET LAST_NAME=NAME,NAME = 'New Name' WHERE ID = 1

一个混乱的答案包括添加一个名为LAST_NAME或类似名称的列:

UPDATE TABLE SET LAST_NAME=NAME,NAME = 'New Name' WHERE ID = 1

一旦更改数据并提交事务(如果使用),以前的值将永远丢失。也许您可以在更新表之前将以前的值存储在内存中?一旦更改数据并提交事务(如果使用),以前的值将永远丢失。也许您可以在更新表之前将以前的值存储在内存中?您也可以在SQL中执行此操作,例如:SET@var=SELECT name FROM table WHERE…@netcoder非常正确,我没有想到这一点,然而,我的主要观点是,在提交新值之前,您需要将值存储在变量中。@mariselvampannerselvam正如netcoder建议的那样,您完全可以在sql中执行此操作,这取决于您以后要对其执行什么操作。您也可以在sql中执行此操作,例如:SET@var=SELECT name FROM table WHERE…@netcoder very true,我没有想到这一点,但我的主要观点是,在提交新值之前,您需要将值存储在变量中。@Mariselvampannerselvam,正如netcoder建议的那样,您完全可以在sql中执行此操作,这取决于您在提交新值之后想对其执行什么操作。