2012-04-03 14 views
0

Versuch, eine überschaubare Ausgabe für Android zu machen, um $ output in JSONObjects zu konvertieren. Wenn ich die auskommentierte untere Zeile verwende, empfängt sie zwar die Daten im Android-Protokoll, kann aber JSONArray nicht in JSONObject konvertieren - also der Wunsch nach einer foreach-Schleife, die jede SQL-Zeile einzeln zurückgibt. Ich kann keine Syntaxprobleme sehen, also weiß ich nicht, worüber sich PHP beschwert - irgendwelche Ideen? Wenn ich den auskommentierten Druckcode verwende, gibt er auch korrekte Ergebnisse zurück, sodass ich weiß, dass es kein Problem ist, auf die db zuzugreifen. Hier ist der Code:Foreach-Schleife scheint einen Syntaxfehler zu haben?

<?php 

define("DB_HOST", "localhost"); 
define("DB_USER", "*"); 
define("DB_PASSWORD", "*"); 
define("DB_DATABASE", "*"); 

mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 
mysql_select_db(DB_DATABASE); 
$sql=mysql_query("select * from QUESTIONS where CATEGORY like 'elections'"); 
while($row=mysql_fetch_assoc($sql)) 
$output[]=$row; 
foreach($output) { 
echo $output; 
} 
mysql_close(); 


//print(json_encode($output)); 
?> 

Und hier ist der Fehler:

Parse error: syntax error, unexpected ')' in /home/frehud/public_html/android_api/getQuestions/index.php on line 13 

Antwort

2

Sie benötigen as Schlüsselwort verwenden und assign jeder Wert in einer Variablen ($ Wert hier). Dann echo diese Variable.

wie unten:

foreach($output as $value) { 
echo $value; 
} 
+0

Fehler jedoch die Outpu t ist nicht korrekt. Wenn ich auf einer Webseite bin, bekomme ich "ArrayArray" einmal angezeigt. Ich habe die Echozeile in print geändert (json_encode ($ value)); während Sie Ihre vorgeschlagene Syntax verwenden und den Inhalt der Tabelle ausgedruckt haben. Vielen Dank! Ich werde als Antwort markieren, sobald ich kann. – Davek804

2

Sie sind in der foreach-Schleife die Wertzuweisung fehlt.

Statt foreach($output) brauchen Sie so etwas wie dies zu tun:

foreach($output as $value) { 
    echo $value; 
} 

Siehe PHP - foreach

+0

Yep eine Person über eben diese erwähnt, und es ist die Lösung. Ich habe mir auch diese Seite angesehen, um zu lernen, wie man PHP für jede Schleife macht, aber falsch interpretiert, wie die Parameter ausgesehen haben sollten! Vielen Dank. – Davek804

1

Sieht aus wie Sie die öffnende geschweifte Klammer für die while-Schleife fehlen:

while($row=mysql_fetch_assoc($sql)) 

Sollte sein:

while($row=mysql_fetch_assoc($sql)) { 

Auch Sie nicht über die innere foreach Schleife benötigen, sollten Sie Zugriff haben, Daten über die $row Variable in der while-Schleife bevölkert rudern, wie folgt aus:

while($row = mysql_fetch_assoc($sql)) {   
    var_dump($row); 
} 
+0

Ich fügte eine Anfangs- und Endklammer für die while-Schleife hinzu (angenommen, dass sie keine benötigte, da es nur eine Zeile/Operation in der Schleife gab. Kann aber nicht schaden, diese hinzuzufügen. Danke! – Davek804

+0

Ya dein Recht Ich habe es erst bemerkt, als ich es genauer betrachtet habe, ich habe damit vor langer Zeit aufgehört, also habe ich mich nicht selbst verwirrt –

+0

Ich glaube immer noch nicht, dass du die innere foreach-Schleife brauchst, du kannst Zugang bekommen in den $ row-Daten bereits. Wenn Sie nicht versuchen, etwas anderes zu tun? –

Verwandte Themen