Php 显示在SQL查询中修改的数据
我有一个“用户”表。用户可以修改他们的数据,如姓名、姓氏、电子邮件。我想发送电子邮件给管理员,其中将包含有关修改数据的详细信息。如果用户只更改姓名和电子邮件,我只想获取更改后的数据—在本例中,仅获取姓名和电子邮件 我的表格:Php 显示在SQL查询中修改的数据,php,mysql,zend-framework,Php,Mysql,Zend Framework,我有一个“用户”表。用户可以修改他们的数据,如姓名、姓氏、电子邮件。我想发送电子邮件给管理员,其中将包含有关修改数据的详细信息。如果用户只更改姓名和电子邮件,我只想获取更改后的数据—在本例中,仅获取姓名和电子邮件 我的表格: <form action="" method="post"> <input type="text" name="name"> <input type="text" name="surname"> <input type="text"
<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>
有没有其他解决方案,我只能抓取修改后的数据?
我使用的是Zend Framework,所有表字段的调用都与POST数据相同。您可以在
$\u POST
数组中循环,并使用键从数据库中获取相应的值:
foreach($_POST as $key => $value){
if($value !== $row[$key]){
$changed[$key] = $value;
}
}
但是,您可能希望排除循环中的某些字段(例如“提交”按钮):
表单是由数据库填充的,还是为空以允许用户输入信息?如果已填充,则可以将信息存储在数组中,并将$\u POST与数据库信息进行foreach比较。如果表单留空供用户填写更改的信息,只需检查$\u POST是否留空或是否提供了更改。不幸的是,没有更多的信息,很难提供答案。表单由数据库中的数据填充。我将用户发送的所有数据存储在一个数组中,我可以将原始数据存储在另一个数组中,但如何从中生成foreach呢?我必须用数据库中的数据做双foreach,用用户的数据做foreach?如何比较这两个阵列?所有字段都是通过表单发送的,所以我必须识别哪些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;
}
}