Foreach循环似乎有语法错误?

时间:2012-04-03 01:05:12

标签: php android mysql foreach

尝试为Android制作可管理的输出,以将$ output转换为JSONObjects。当我使用注释掉的底线时,它在Android的日志中接收数据就好了,但是不能将JSONArray转换为JSONObject - 因此希望foreach循环自己返回每个SQL行。我无法看到任何语法问题,所以我不知道PHP在抱怨什么 - 任何想法?此外,当我使用注释掉的打印代码时,它会返回正确的结果,因此我知道访问数据库没有问题。 这是代码:

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

3 个答案:

答案 0 :(得分:2)

您在foreach循环中缺少值赋值。

而不是foreach($output)你需要做这样的事情:

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

请参阅PHP - foreach

答案 1 :(得分:2)

您需要在变量中使用as关键字和assign每个值(此处为$ value)。然后echo该变量。

如下所示:

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

答案 2 :(得分:1)

看起来你错过了while循环的开口大括号:

while($row=mysql_fetch_assoc($sql))

应该是:

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

此外,您不需要内部foreach循环,您应该可以通过while循环中填充的$row变量访问行数据,如下所示:

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