我需要更改不是我的PHP代码而且遇到了一些问题(请注意我通常用Java编写代码并且几年没用PHP开发。)
我有以下代码和平:
$sql = "SELECT id_class FROM events e join event_to_class ec on e.id = ec.id_event WHERE e.id = ".$r['id']." and ec.id_evaluator = 8 and (".$stepNumbers.")";
$mirekClassesForEvent = mysql_query($sql) or trigger_error(mysql_error().$sql);
if (!$mirekClassesForEvent) {
echo "Could not successfully run query from DB: " . mysql_error();
exit;
}
$mirekClasses = array();
if (mysql_num_rows($mirekClassesForEvent) > 0 ) {
while($row = mysql_fetch_assoc($mirekClassesForEvent) {
array_push($mirekClasses, $row['id_class'];
}
}
select语句如下所示:
SELECT id_class FROM events e join event_to_class ec on e.id = ec.id_event WHERE e.id = 1 and ec.id_evaluator = 8 and (e.id_step=4 OR e.id_step=5 OR e.id_step=6)
当我在MySQL DB中运行它以运行正常并返回一行数据
id_class = 27
然而,当我运行上面的代码时,我的php脚本崩溃了(它甚至没有显示任何错误消息 - 即使我尝试使用mysql_error()
函数)
从我的调试器看起来问题出现在while语句中,但我不明白可能是什么问题。
答案 0 :(得分:4)
)
行末尾有while
,array_push
行有另一行。如果您没有看到任何错误,则可能会报告错误。使用带语法高亮的编辑器可以帮助您找到这种错误,因为它们通常包括突出显示不匹配的括号。
请注意,您可以使用IN
:
... and e.id_step IN (4,5,6)
或BETWEEN
:
... and e.id_step BETWEEN 4 AND 6
答案 1 :(得分:2)
您的代码中存在语法错误:
while($row = mysql_fetch_assoc($mirekClassesForEvent) {
array_push($mirekClasses, $row['id_class'];
}
你错过了while循环的结束括号:
while($row = mysql_fetch_assoc($mirekClassesForEvent)) {
编辑添加:
还有array_push
上的一个 - 很好地发现了Kolink