2012-10-05 104 views
-1

我需要改变不是我的PHP代码,我遇到了一些问题(请注意,我通常使用Java代码,并且在PHP中已经有好几年没有开发过了)。mysql_fetch_assoc崩溃的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数据库来运行正常,并返回数据的一行与

id_class = 27

然而,当我运行上面我的PHP脚本崩溃的代码(它甚至不显示任何错误消息 - 甚至当我尝试使用mysql_error()功能)

从我debuggin它看起来像这个问题是在虽然陈述,但我不明白可能是什么问题。

+0

下一次,看在你的PHP错误日志。应该有一个分析错误,文件的名称和行号。 – Jocelyn

+0

我很乐意这样做,但它不是我的代码,它不是我配置环境的。我试图寻找日志,但我找不到任何。 – Jakub

回答

4

您错过了)while行末尾,另一个在array_push行。如果您看不到任何错误,则可能会报告错误。使用语法突出显示的编辑器将帮助您找到这种错误,因为它们通常包含突出显示的不匹配括号。

请注意,您可以通过使用IN简化查询一点:

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

或者BETWEEN

它发生
... and e.id_step BETWEEN 4 AND 6 
+0

我一定是盲目的!谢谢! – Jakub

2

有一个在你的代码中的语法错误:

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

你错过了你的while循环的一个右括号:

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

Editted补充:

而且也是一个在array_push,也 - 发现Kolink

+0

确实没有必要 – rsz