[英]Can't recieve data from JSON - PHPMyAdmin
我有一個PHP腳本,可用於從BBDD獲取一些信息:
<?php
//Creating a connection
$con = mysqli_connect("localhost:3306","root","","database");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql= "SELECT * FROM tQuestions";
$result = mysqli_query($con ,$sql);
while ($row = mysqli_fetch_assoc($result))
{
$array[] = $row;
(ONLY USED ON SECOND TRY) echo $row;
}
header('Content-Type:Application/json');
echo json_encode($array);
mysqli_free_result($result);
mysqli_close($con);
?>
當我在Android應用程序上使用它時,我會收到一個空值。 另外,當我轉到正確的鏈接時,我會收到一個沒有信息的頁面和一個無效的JSON文件。
當我放置echo $row
以查看接收到的內容時,我將得到一個類似這樣的字符串: ArrayArrayArrayArray
,其中包含50個“ Array”字,與我在數據庫中的行相同。
我究竟做錯了什么?
這是我的Android代碼:
private void getQuestionsFromDB() {
AsyncTask<Void, Void, JSONArray> asyncTask = new AsyncTask<Void, Void, JSONArray>() {
@Override
protected JSONArray doInBackground(Void... params) {
JSONArray array = null;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://www.am-motion.eu/scriptsapp/preguntas.php")
.build();
try {
Response response = client.newCall(request).execute();
array = new JSONArray(response.body().string());
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return array;
}
@Override
protected void onPostExecute(JSONArray array) {
try {
for (int i = 0; i < array.length(); i++) {
JSONObject object = null;
object = array.getJSONObject(i);
listQuestions.add(object.getString("Question"));
listAnswers.add(object.getString("Answer1"));
listAnswers.add(object.getString("Answer2"));
listAnswers.add(object.getString("Answer3"));
listAnswers.add(object.getString("Answer4"));
listCorrectAnswer.add(object.getString("Answer"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
asyncTask.execute();
}
您的問題是您要將所有數組傳遞給'json_encode'函數。 您必須使用for或foreach循環來解析值:
for ($i = 0; $i < sizeof($array); $i++) {
echo json_encode($array[$i]);
}
如果您想要JSONArray,則可以使用:
for ($i = 0; $i < sizeof($array); $i++) {
if($i==0){
echo '[';
echo json_encode($array[$i]);
} else if ($i == sizeof($array) -1) {
echo json_encode($array[$i]);
echo "]";
} else {
echo json_encode($array[$i]);
echo ",";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.