我在我的网站上使用的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。我确保在这个外部代码中的适当位置打开/关闭数据库,但是,它通常也能正常工作。
我只是想知道造成这些错误的原因是什么,有时只是。
答案 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.