使用MySQL的PHP​​有时会返回错误,并且在其他时间工作,尽管我什么都没改变

时间:2011-10-19 21:15:03

标签: php mysql sql

我在我的网站上使用的MySQL遇到了一个奇怪的问题。有时候,我会代替我的代码:

Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in [the current file] on line 14

代码如下:

<?php

    include("../../configsql/configsemester.php");

    $query="SELECT * FROM duedates_f2011 GROUP BY actualdate";
    $result=mysql_query($query);
    $numrows=mysql_numrows($result);


    $i=0;

    while($i < $numrows)
    {

        $actualdate=mysql_result($result,$i,"actualdate");
        $duedate=mysql_result($result,$i,"duedate");
        $styleclass="date"; mysql_result($result,$i,"styleclass");
        $today=date("Y-m-d"); //H:i:s");
        $query2="SELECT * FROM duedates_f2011 WHERE duedate = \"" . $duedate . "\"";
        $result2=mysql_query($query2);
        $numrows2=mysql_numrows($result2);

        $k=0;

        if( $today > $actualdate)
        { $styleclass="done duedate"; }
        echo "<div class=\"" . $styleclass . "\">\n\t";
        echo "<h3>" . $duedate . "</h3>\n";

        echo "<ul>\n\t";
        while($k < $numrows2)
        {
            $assignmentname=mysql_result($result2,$k,"assignmentname");
            $duetime=mysql_result($result2,$k,"duetime");
            $coursecode=mysql_result($result2,$k,"coursecode");
            $link=mysql_result($result2,$k,"link");

            //echo "<div class=\"" . $styleclass . "\">\n\t";
            if(is_null($link)) { echo "<li>" . $coursecode . ": " . $assignmentname . " @ " . $duetime . "</li>"; } else { echo "<li><a href=\"" . $link . "\">" . $coursecode . ": " . $assignmentname . " @ " . $duetime . "</a></li>"; }
            //echo "<li>" . $coursecode . ": " . $assignmentname . " @ " . $duetime . "</li>";
            $k++;
        }
        echo "\n</ul>\n";
        $i++;
        if($i != $numrows)
        {
            echo "<hr class=\"nonmobile\" />\n"; //so that it is not displayed at the end, also this must be inside the <div> so that it is included 
        }
        echo "</div>\n\n";
    }
    mysql_close();

?>

应该注意的是,上面的代码是在另一个页面中包含()的页面的一部分,该页面也使用MySQL。我确保在这个外部代码中的适当位置打开/关闭数据库,但是,它通常也能正常工作。

我只是想知道造成这些错误的原因是什么,有时只是。

3 个答案:

答案 0 :(得分:2)

如果你把

or die(mysql_error())
之前;第14行

下次崩溃时你会得到完整的解释

答案 1 :(得分:1)

你调用函数mysql_numrows()但它实际上叫做mysql_num_rows()。

修改

似乎PHP也接受mysql_numrows(),所以这不是问题。

实际错误表示执行查询时出错。正如其他答案中所建议的那样,你应该使用mysql_error()来找出实际错误是什么。

您的查询不是很复杂,数据库中是否可能存在表duedates_f2011?或者它没有名为actualdate的属性?我现在只是在猜测:)

答案 2 :(得分:1)

如果没有返回记录,则可能发生这种情况,或者如果服务器无法连接等,我会将此添加到所有mysql_query()行的末尾以找出问题,尤其是超过页面上有一个查询:

mysql_query($query) or die(mysql_error()); // so it will stop execution and output any errors on whatever line is the issue.