我需要从包含数千个项目的外部数据库中读取数据。到目前为止我所做的是我编写了返回所有项目的 php 查询,然后我用 JSON 解析它们。像这样:
php:
$stmt = $conn->prepare("SELECT COMMENT_ID, USERNAME, COMMENT, DATE, LINK, NOW() AS SERVERTIME FROM COMMENTROOM ORDER BY DATE DESC");
$stmt -> execute(array($link));
while($row = $stmt->fetchAll(PDO::FETCH_ASSOC)) {
$output[] = $row;
}
print(json_encode($output));
安卓:
JSONArray jArray = new JSONArray(commentResult);
for(int i=0;i<jArray.length();i++){
JSONArray innerJsonArray = jArray.getJSONArray(i);
for(int j=0;j<innerJsonArray.length();j++){
JSONObject jsonObject = innerJsonArray.getJSONObject(j);
if (jsonObject.getString("LINK").equals(GlobalVars.getLINK_FOR_COMMENT())){
Comment.add(jsonObject.getString("COMMENT"));
}
}
}
这很好用,但我认为这不是有效的,特别是如果表包含数万个项目。所以我想以某种方式将link
变量传递给 php 查询,因此选择过程将由 sql 完成,而不是通过慢得多的 JSON 解析。新的PHP:
$link = $_POST['link'];
try {
$stmt = $conn->prepare("SELECT COMMENT_ID, USERNAME, COMMENT, DATE, NOW() AS SERVERTIME FROM COMMENTROOM WHERE LINK=? ORDER BY DATE DESC");
$stmt -> execute(array($link));
while($row = $stmt->fetchAll(PDO::FETCH_ASSOC)) {
$output[] = $row;
}
print(json_encode($output));
我的问题是如何将link
变量从 android 传递给这个 php 查询,这样查询只会返回正确的项目而我不必解析结果?
提前致谢!