Php 获取更新后的上一个值-MySql

Php 获取更新后的上一个值-MySql,php,mysql,Php,Mysql,我有一个包含id和名称的表 --- ----- id name --- ----- 1 pete 我的场景是这样的 $sql = "SELECT name FROM table_name WHERE id=1"; previous name - '' current name - pete 现在我来更新一下 $sql = "UPDATE table_name SET name='dave' WHERE id=1"; previous name - pet

我有一个包含id和名称的表

---    -----  
id     name
---    -----
1      pete
我的场景是这样的

$sql = "SELECT name FROM table_name WHERE id=1";

previous name - ''
current name - pete
现在我来更新一下

$sql = "UPDATE table_name SET name='dave' WHERE id=1";

previous name - pete
updated name - dave

$sql = "UPDATE table_name SET name='Alan' WHERE id=1";

previous name - dave
updated name - Alan

所以在我更新这个表之后,我想获取它中存在的前一条记录。在我的示例中,我应该获得以前的名称以及更新的名称。如何实现这一点

除非将以前的名称作为备份保存到表中,否则无法获取该名称

如果要实现此目的,请在表中再创建一列并保存当前名称,然后再更新为新名称。

如果要更新一行并使用以前的名称,可以使用变量:

set @prevname = '';

update table_name
    set name = if(@prevname := name, 'Alan', 'Alan')
    where id = 1;

select @prevname;

但是,我怀疑您真的想要一个缓慢变化的维度,而
更新
不是正确的操作。

您可以使用表上的
关键字来实现这一点


尽管如此,我看到您将您的帖子标记为php,我猜您希望在php中获得旧值,要做到这一点,您必须在
UPDATE
之前执行
SELECT
以获得旧名称,在
UPDATE
之后执行另一个
SELECT
以获得新名称。

您可以通过不更新记录来实现这一点。听起来您有一个业务问题——可能需要一个缓慢变化的维度,
update
不是正确的解决方案。