2017-07-12 6 views
1

Ich entwickle eine Android-Anwendung, die eine Anfrage an einen Server stellt, in dem ich eine Datenbank programmiert habe. Auf dem Server arbeite ich mit PHP um Abfragen durchzuführen. Jetzt habe ich diesen Code geschrieben, um eine Abfrage zu machen und das Ergebnis in ein Array zu pushen, das ich später in "Android part" mit Java verwenden kann. Das ist mein PHP-Code:php json_encode nur die erste Zeile eines Arrays zurückgeben

$query="SELECT * FROM $tbl_name WHERE user='$myusername'"; 
$res=mysql_query($query); 
$posts = array(); 
if(mysql_num_rows($res)) { 
    while($post[] = mysql_fetch_assoc($res)) { 
    array_push($posts, $post); 
    } 
} 
echo json_encode(array('posts'=>$posts)); 

Das Problem ist, dass wenn ich versuche, das Ergebnis in Java zu bekommen ich nur die erste Zeile des Ergebnisses sehen kann. Ich bin sicher, dass ich mehr als 1 Reihe habe, weil ich versucht habe, mysql_num_rows($res) zu drucken, und das Ergebnis war größer als 1. Wie kann ich dieses Problem beheben?

Bearbeiten. Nur um zu klären. Ich rufe meinen Server an, in dem ich php von Android AsynTask verwende. In OnPostExecute Verfahren mache ich so etwas wie dieses:

String res = result.toString(); 

wo Ergebnis ist die JSONObject, die ich von doInBackground Verfahren erhalten. Vielleicht mache ich Fehler Hier, weil alle deine Lösung mir immer nur die erste Zeile des Abfrageergebnisses gibt.

+0

'mysql_fetch_assoc()' rufen Sie eine Zeile nach der anderen ab, deshalb verwenden Sie 'while', um alle Datensätze zu holen. Ersetzen Sie '$ path []' durch '$ path' –

+0

, wenn ich $ post [] durch $ post nothing change ersetzen. –

+0

Beenden Sie die Verwendung von mysql_ *' Funktionen. Sie wurden in PHP 7+ entfernt und waren in früheren Versionen veraltet. Sie sind auch unsicher und unterstützen keine vorbereiteten Aussagen. Sie sollten stattdessen [PDO] (http://php.net/manual/en/book.pdo.php) oder [mysqli_ * '] (http://php.net/manual/en/book.mysqli) verwenden .php) Funktionen. – apokryfos

Antwort

0

Sie müssen hier kein Array angeben.

Wechsel: while($post[] = mysql_fetch_assoc($res)) {

An: while($post = mysql_fetch_assoc($res)) {

Sie können immer var_dump($posts) nach while Anweisung und prüfen Sie, ob Sie bekommen, was Sie wollen.

Verwandte Themen