我试图从我的数据库中检索数据,我写了这段代码
<?php
require "conn.php";
$mysql_qry = "select * from domande";
$res = mysqli_query($conn,$mysql_qry);
$result = array();
while($row = mysqli_fetch_array($res)){
array_push($result,
array('id_domanda'=>$row[0],
'domanda'=>$row[1],
'username'=>$row[2]
));
}
echo json_encode(array("result"=>$result));
mysqli_close($conn);
?>
它应该返回一个数组。我已经能够以这种方式在警告对话框中显示数组:
class BackgroundWorkerDomande extends AsyncTask<String,Void,String> {
Context context;
AlertDialog alertDialog;
BackgroundWorkerDomande (Context ctx){
context = ctx;
}
@Override
protected String doInBackground(String... params) {
String type = params[0];
if (type=="getquestion"){
try {
URL url = new URL(params[3]);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"));
String result = "";
String line = "";
while ((line = bufferedReader.readLine()) != null) {
result += line;
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPreExecute() {
alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("Status");
}
@Override
protected void onPostExecute(String result) {
alertDialog.setMessage(result);
alertDialog.show();
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
}
但如果我想将结果插入我的MainActivity中声明的新数组,我该怎么办?我只是按照互联网上的一些教程来编写这段代码,所以我不完全知道它是如何工作的。 (抱歉我的英语不好)
答案 0 :(得分:0)
由于您发布了工作代码但未指定确切问题,因此有点难以准确了解您的需求。特别是,&#34;将结果插入新数组&#34;意思?从表面看,我看到了:
ArrayList<String> results;
results.add (result);
但是,我会提出一个建议:在你的PHP代码中,你可以将它分成字段并将其作为数组发布,而不是将整个结果作为一个字符串发布吗?然后,在接收端,如果您想使用单个字段值,则不必从result
解析它们。