我有,我用它來獲得從BBDD一些信息以.php腳本:無法從JSON收到的數據 - 的phpMyAdmin
<?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 $行」來看看我收到了什麼,並且我有一個這樣的字符串:「ArrayArrayArrayArray」...並且它有50個「數組」字樣,它們與我在數據庫中擁有的行。
我在做什麼錯?我也把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();
}
謝謝!
如果從瀏覽器訪問URL,什麼是輸出?是否顯示'json'數據? –
沒有輸出。我看到一個白皮書tiwhout信息。但是,如果我使用「echo $ row」的輸出是「ArrayArrayArray ...」 – Imrik
請檢查您的apache錯誤日誌,我只是好奇'json'模塊未在您的php中激活 –