使用隐藏字段更新数据库中的数据
Using hidden fields for updating data in database
所以我有一个 html table 包含从数据库检索的数据。在每一行中,都有一个 "edit" 按钮。它看起来像这样:
<td><form action="controller/edit" method="post">
<input type="hidden" name="id" value="<?php echo $id ?>">
<input type="submit" value="edit">
</form></td>
然后在controller/edit页面我会再次访问数据库:
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>
这样行中的所有数据都在表单中,所以当表单提交到 controller/edit 我不需要再次访问数据库。这种方法好吗?或者这是不好的做法?
你提到的第二个看起来像是一条捷径,但它可能容易受到攻击。
隐藏字段很容易被篡改。例如,用户可以操纵隐藏字段的值并将值更改为随机数,如 975646456456456.
在这种情况下,您的数据库将有一个错误的插入,因为可能没有对应于 id 975646456456456 的匹配记录。
所以,我认为你应该选择第一个,检查你的数据库,如果 id 存在,并获取它的记录。
尝试使用 jquery.button
提交。例如提交表单:
submitform(){
jQuery('form id').attr('action','url'+'?id= "id from db");
jQuery('form id').submit();
}
所以我有一个 html table 包含从数据库检索的数据。在每一行中,都有一个 "edit" 按钮。它看起来像这样:
<td><form action="controller/edit" method="post">
<input type="hidden" name="id" value="<?php echo $id ?>">
<input type="submit" value="edit">
</form></td>
然后在controller/edit页面我会再次访问数据库:
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>
这样行中的所有数据都在表单中,所以当表单提交到 controller/edit 我不需要再次访问数据库。这种方法好吗?或者这是不好的做法?
你提到的第二个看起来像是一条捷径,但它可能容易受到攻击。
隐藏字段很容易被篡改。例如,用户可以操纵隐藏字段的值并将值更改为随机数,如 975646456456456.
在这种情况下,您的数据库将有一个错误的插入,因为可能没有对应于 id 975646456456456 的匹配记录。
所以,我认为你应该选择第一个,检查你的数据库,如果 id 存在,并获取它的记录。
尝试使用 jquery.button
提交。例如提交表单:
submitform(){
jQuery('form id').attr('action','url'+'?id= "id from db");
jQuery('form id').submit();
}