2016-04-30 119 views
0

因此,我有一個包含從數據庫中檢索到的數據的html表。在每一行中都有一個「編輯」按鈕。它看起來像這樣:使用隱藏字段更新數據庫中的數據

<td><form action="controller/edit" method="post"> 
    <input type="hidden" name="id" value="<?php echo $id ?>"> 
    <input type="submit" value="edit"> 
</form></td> 

然後在控制器/編輯頁面我將再次訪問數據庫:

select * from table where id=$_POST['id'] 

這是所有罰款。不過,我正在減少對數據庫的第二次訪問以提高性能。我試圖做這樣的事情:

<td><form action="controller/edit" method="post"> 
    <input type="hidden" name="id" value="<?php echo $id ?>"> 
    <input type="hidden" name="name" value="<?php echo $name ?>"> 
    <input type="hidden" name="amount" value="<?php echo $amount ?>"> 
    <input type="submit" value="edit"> 
</form></td> 

這樣,所有從該行的數據形式,所以當表單提交到控制器/編輯我並不需要再次訪問數據庫。這種方法很好嗎?或者這是不好的做法?

+0

對於像編輯界面那樣不常見的東西?只需從數據庫再次加載它。 – Scuzzy

回答

1

您提到的第二個確實看起來像是一條捷徑,但它可能很脆弱。

隱藏字段很容易被篡改。例如,用戶可以操作隱藏字段的值並將該值更改爲一個隨機數,如975646456456456.

在這種情況下,數據庫將具有不正確的插入,因爲可能沒有匹配的記錄對應以ID 975646456456456.

所以,我認爲你應該與第一個去檢查你的數據庫,如果該ID存在,並獲取其記錄。

-1

嘗試使用jquery.button提交。例如提交表單:

submitform(){ 
     jQuery('form id').attr('action','url'+'?id= "id from db"); 
     jQuery('form id').submit(); 
}