Foreach循环似乎有语法错误?
试图为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
你需要使用as
关键字和assign
每个值在一个变量($ value在这里)。然后echo
那个变量。
象下面这样:
以上foreach($output as $value) {
echo $value;
}
你缺少在foreach循环中的赋值。
相反的foreach($output)
你需要做的是这样的:
foreach($output as $value) {
echo $value;
}
是的一个人提到的只是这和它的解决方案。我也看过那个页面来学习如何为每个循环做一个PHP,但误解了参数应该看起来像什么!谢谢。 – Davek804 2012-04-03 01:18:58
看起来你缺少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);
}
我在while循环的开始和结束大括号中添加了(假设它不需要一个,因为循环中只有一行/操作,但是不能伤害到这些,但是,谢谢! – Davek804 2012-04-03 01:11:35
Ya your right我没有意识到它,直到我看得更近,我很久以前就停止了这样做,所以我没有最终让自己感到困惑。 – 2012-04-03 01:12:20
我仍然认为你不需要内部的foreach循环,但是你可以访问在$ row的数据中已经存在了,除非你正在尝试做别的事情吗? – 2012-04-03 01:13:19
修复了错误,但是,输出t是不正确的。在网页中,我会显示一次“ArrayArray”。我改变了回声行来打印(json_encode($ value));同时使用您的建议语法,并打印出表格内容。谢谢!我会尽快答复。 – Davek804 2012-04-03 01:15:03