所以我有一个包含从数据库中检索的数据的html表。在每一行中都有一个"编辑"按钮。它看起来像这样:
private Document doc;
private ArrayList<String> list = new ArrayList<>();
@Override
protected void onCreat(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_data_mining);
Thread downloadThread = new Thread() {
public void run() {
try {
doc = Jsoup.connect("http://thewebsite.html").get();
Elements table = doc.select("table");
Elements rows = table.select("tr");
for (int i = 0; i < rows.size(); i++) {
org.jsoup.nodes.Element row = rows.get(i);
Elements cols = row.select("td");
list.add(cols.get(i).text());
}
runOnUiThread(new Runnable() {
@Override
public void run() {
setListAdapter();
}
}
);
}
catch (IOException e) {
e.printStackTrace();
}
}
};
downloadThread.start();
}
private void setListAdapter() {
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.datalayout, list);
ListView view = (ListView) findViewById(R.id.dataListView);
view.setAdapter(adapter);
}
然后在控制器/编辑页面中,我将再次访问数据库:
<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']
这样来自行的所有数据都在表单中,因此当表单提交到控制器/编辑时,我不需要再次访问数据库。这种做法好吗?或者这是不好的做法吗?
答案 0 :(得分:1)
你提到的第二个看起来似乎是一个捷径,但它可能是脆弱的。
隐藏的字段很容易被篡改。例如,用户可以操纵隐藏字段的值并将值更改为随机数,如975646456456456.
在这种情况下,您的数据库插入不正确,因为可能没有与id 975646456456456对应的匹配记录。
所以,我认为你应该使用第一个并检查数据库是否存在,并获取其记录。
答案 1 :(得分:-1)
尝试使用.replace(/\n/g, "\r\n")
提交。例如提交表单:
jquery.button