显示在SQL查询中修改的数据

时间:2014-09-02 13:58:32

标签: php mysql zend-framework

我有一张桌子'用户'。用户可以修改他们的数据,例如姓名,电子邮件。我想发送电子邮件给管理员,其中包含有关修改数据的详细信息。如果用户只更改名称和电子邮件,我只想获取更改的数据 - 在这种情况下只需要名称和电子邮件。

我的表格:

<form action="" method="post">
<input type="text" name="name">
<input type="text" name="surname">
<input type="text" name="email">
<input type="submit" value="Send">
</form>

我可以抓取在sql查询中修改过的数据,排除表格和表格中相同的数据吗? 我有一个想法,我必须检查每个POST字段与数据库中的相同,但我有更多的字段,这个解决方案不太好:

if($row['email'] !== $_POST['email']) { $changed_email = $_POST['email']; } 

if($row['name'] !== $_POST['name']) { $changed_name = $_POST['name']; }

还有其他解决方案我只能抓取修改过的数据吗? 我使用Zend Framework,所有表字段都与POST数据相同。

1 个答案:

答案 0 :(得分:0)

您可以循环遍历$_POST数组并使用该键从数据库中获取相应的值:

foreach($_POST as $key => $value){
    if($value !== $row[$key]){
        $changed[$key] = $value;
    }
}

但是,您可能希望在循环中排除某些字段(例如提交按钮):

$excluded_keys = array('submit', 'some_other_key');
foreach($_POST as $key => $value){
    if(in_array($key, $excluded_keys)) continue;

    if($value !== $row[$key]){
        $changed[$key] = $value;
    }
}