mysql_fetch_assoc崩溃了php代码

时间:2012-10-05 15:39:21

标签: php mysql

我需要更改不是我的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语句中,但我不明白可能是什么问题。

2 个答案:

答案 0 :(得分:4)

)行末尾有whilearray_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