2017-06-22 9 views
0

ich einen Php-Skript, das ich einige Informationen von einem BBDD zu erhalten:Daten können nicht von JSON empfangen - 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); 
?> 

Als ich es auf meinem Android-App verwenden, Ich erhalte einen Nullwert . Auch wenn ich den richtigen Link gehe, erhalte ich eine Seite ohne Informationen und eine leere JSON-Datei.

Dann legte ich eine "echo $ row", um zu sehen, was ich bekomme, und ich habe eine Zeichenfolge wie folgt: "ArrayArrayArrayArray" ... Und es hat 50 "Array" -Wörter, die gleich sind die Zeilen, die ich in der Datenbank habe.

Was mache ich falsch? Ich habe auch den Android-Code:

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(); 
} 

Vielen Dank!

+0

Wenn Sie die URL von Browser zugreifen, was ist der Ausgang? Werden die 'json' Daten angezeigt? –

+0

wird nicht ausgegeben. Ich sehe eine weiße Seite mit Informationen. Aber, wenn ich "echo $ row" die Ausgabe war "ArrayArrayArray ..." – Imrik

+0

bitte überprüfen Sie Ihre Apache Fehlerprotokoll, ich nur neugierig 'Json' Modul nicht aktivieren in Ihrem PHP –

Antwort

0

Ihr Problem besteht darin, dass Sie das gesamte Array an die Funktion 'json_encode' übergeben. Sie haben eine für oder foreach-Zyklus zu verwenden, um die Werte zu analysieren:

for ($i = 0; $i < sizeof($array); $i++) { 
    echo json_encode($array[$i]); 
} 

Und wenn Sie ein JSONArray möchten, können Sie verwenden:

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 ","; 
    } 
} 
+0

Ich werde versuchen, jetzt – Imrik

+0

der erste funktioniert gut , aber die zweite gibt mir eine Seite ohne Daten, ist alles Whit. Weißt du, warum? Ich bin auf der zweiten Option interessant. – Imrik

+0

Ich passe es mit einem "}" am Ende. Aber das Format ist nicht korrekt, denke ich. Es gibt mir zwei zusätzliche "," am Ende, vor dem "]". – Imrik

Verwandte Themen