簡體   English   中英

無法從JSON接收數據-PHPMyAdmin

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM