如何从外部sql数据库中获取某些数据?

时间:2013-04-21 14:23:18

标签: php mysql json

我想以最快的方式从外部数据库获取数据。我的问题是我可以进行查询并获取所有数据然后使用JSON我能够获得我需要的东西。但我很好奇是否有更快的解决方案,所以我浏览了php中的所有数据,然后找到我需要的相应数据并仅将其返回到JSON而不是整个查询。当我需要100万个记录时,第一个解决方案可能会很慢。

如果是ID,这将是.php代码,用于查找用户名。如何将该ID提供给.php脚本?

$ID = $_GET['ID'];
try {
    $stmt = $conn->prepare("SELECT USERNAME FROM APPUSERS WHERE ID=?");
    $stmt -> execute(array($id));
        while($row = $stmt->fetchAll(PDO::FETCH_ASSOC)) {
            $userdata[] = $row;
        }
    $response = '1';
    } catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
    $response = '0';
}

print(json_encode($userdata));

如果我删除了sql代码的WHERE部分,我可以使用以下代码获取表中的所有记录:

try{
      HttpClient httpclient = new DefaultHttpClient();
      HttpPost httppost = new HttpPost("http://www.mywebpage.com/query.php");
      HttpResponse response = httpclient.execute(httppost);
      HttpEntity entity = response.getEntity();
      is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
//convert response to string
try{
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
               sb.append(line + "\n");
        }
        is.close();

        Bresult=sb.toString();
}catch(Exception e){
   Log.e("log_tag", "Error converting result "+e.toString());
}

然后从这个Bresult变量中我得到了适当的记录,例如

JSONArray jArray = new JSONArray(ViewPagerActivity.Bresult);
for(int i=0;i<jArray.length();i++){
  JSONObject jsonObject = innerJsonArray.getJSONObject(j);
  if (jsonObject.getString("ID").equals("12345") {
      String user = jsonObject.getString("USERNAME");
  }
}

所以我浏览了所有记录,然后检索我需要的用户名。 但是,如果我只能检索我需要的用户名而不是所有记录,我认为这可以更快。问题是,我该怎么做?

提前谢谢!!

0 个答案:

没有答案