2012-04-03 183 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