-1

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

4

2 回答 2

4

您在该行)的末尾缺少一个while,并且在该行中缺少另一个array_push。如果您没有看到任何错误,则您可能关闭了错误报告。使用带有语法高亮的编辑器可以帮助您发现这种错误,因为它们通常包括不匹配括号的高亮。

请注意,您可以使用以下命令稍微简化查询IN

... and e.id_step IN (4,5,6)

或者BETWEEN

... and e.id_step BETWEEN 4 AND 6
于 2012-10-05T15:41:19.340 回答
2

您的代码中存在语法错误:

while($row = mysql_fetch_assoc($mirekClassesForEvent) {
       array_push($mirekClasses, $row['id_class'];
  }

您在 while 循环中缺少右括号:

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

编辑添加:

还有一个在array_push同样著名的 Kolink 上

于 2012-10-05T15:41:01.703 回答