2014-09-02 74 views
0

我有一個表'用戶'。用戶可以修改其數據,例如。姓名,電子郵件。我想發送電子郵件給管理員,其中將包含有關修改數據的詳細信息。如果用戶只更改姓名和電子郵件地址,我只想抓取更改後的數據 - 在這種情況下只能輸入姓名和電子郵件。顯示在SQL查詢中修改的數據

我的形式:

<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框架和所有表字段被稱爲POST數據相同。

+0

表單由數據庫填充,還是空白以允許用戶輸入信息?如果它已填充,則可以將信息存儲在數組中,並對$ _POST與數據庫信息進行foreach比較。如果表單留空以便用戶填寫更改的信息,只需檢查$ _POST是否留空或者提供了更改。不幸的是,沒有更多的信息,答案很難提供。 – nwolybug 2014-09-02 14:32:04

+0

表單由數據庫中的數據填充。我存儲用戶發送的數組中的所有數據,並且我可以將oryginal數據存儲在其他數組中,但是如何通過這種方式進行foreach?我必須對來自數據庫的數據和來自用戶的數據的foreach進行雙重foreach?如何比較這兩個數組?所有字段總是以表單形式發送,所以我必須識別哪些POST數據與數據庫中的數據不同。 – dtx 2014-09-02 14:38:47

回答

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; 
    } 
}