2012-04-03 168 views
0

試圖爲Android創建可管理的輸出以將$輸出轉換爲JSONObjects。當我使用註釋掉的底線時,它會收到Android日誌中的數據,但無法將JSONArray轉換爲JSONObject - 因此希望foreach循環自行返回每個SQL行。我看不到任何語法問題,所以我不知道PHP在抱怨什麼 - 有什麼想法?另外,當我使用註釋掉的打印代碼時,它會返回正確的結果,所以我知道訪問數據庫沒有問題。 下面的代碼:Foreach循環似乎有語法錯誤?

<?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)); 
?> 

而這裏的錯誤:

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

回答

2

你需要使用as關鍵字和assign每個值在一個變量($ value在這裏)。然後echo那個變量。

象下面這樣:

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

修復了錯誤,但是,輸出t是不正確的。在網頁中,我會顯示一次「ArrayArray」。我改變了回聲行來打印(json_encode($ value));同時使用您的建議語法,並打印出表格內容。謝謝!我會盡快答覆。 – Davek804 2012-04-03 01:15:03

2

你缺少在foreach循環中的賦值。

相反的foreach($output)你需要做的是這樣的:

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

PHP - foreach

+0

是的一個人提到的只是這和它的解決方案。我也看過那個頁面來學習如何爲每個循環做一個PHP,但誤解了參數應該看起來像什麼!謝謝。 – Davek804 2012-04-03 01:18:58

1

看起來你缺少while循環的大括號:

while($row=mysql_fetch_assoc($sql)) 

應該成爲:

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

而且,你不需要內foreach循環,你應該有機會通過$row變量填充在while循環,這樣對行數據:

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

我在while循環的開始和結束大括號中添加了(假設它不需要一個,因爲循環中只有一行/操作,但是不能傷害到這些,但是,謝謝! – Davek804 2012-04-03 01:11:35

+0

Ya your right我沒有意識到它,直到我看得更近,我很久以前就停止了這樣做,所以我沒有最終讓自己感到困惑。 – 2012-04-03 01:12:20

+0

我仍然認爲你不需要內部的foreach循環,但是你可以訪問在$ row的數據中已經存在了,除非你正在嘗試做別的事情嗎? – 2012-04-03 01:13:19