当mysql_num_rows在php中返回4时,mysql_fetch_array不返回任何内容

时间:2011-05-11 01:23:58

标签: php mysql

我在php中有一些代码按顺序访问mysql数据库,然后在表格中输出信息。但是,每当它调用mysql_fetch_array时,该函数都不返回任何内容,即使mysql_num_rows为4.也就是说,如果我执行$ row = mysql_fetch_array($ result);, $ row ['name']是“”,即使有最肯定的表中的名称列。代码片段如下:

<?php
include_once("include.php");
$number=0;
if(!isset($_GET['scores'])) {
   $number=10;
}
else if((int )$_GET['scores']>100) {
   $number=100;
}
else if((int) $_GET['scores']<0) {
   $number=10;
}
else {
   $number=(int) $_GET['scores'];
}

$con=mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname, $con);
$result=mysql_query("SELECT * FROM ".$dbtable_scores." ORDER BY score DESC,date;", $con);
$num=1;
echo("<table>");
echo("<tr><td>position</td><td>Name</td><td>score</td><td>date</td></tr>");
while($row=mysql_fetch_array($result) && $num<=$number) {
   echo("<tr>");
   echo("<td>".$num."</td>");
   echo("<td>".$row['name']."</td><td>".$row['score']."</td><td>".$row['date']."</td>");
   echo("</tr>");
   $num++;
}
echo("</table>");
mysql_close($con);
?>

我已经检查了mysql cli中的查询,它似乎工作正常。但是,正如您将看到的那样,如果您转到http://mtgames.org/index.php,该表只包含不是从mysql生成的数字。 mysql表包含列名,分数,日期等。 任何帮助表示赞赏。 谢谢, -Michael。

2 个答案:

答案 0 :(得分:3)

$row未设置为mysql_fetch_array()的结果,它被设置为mysql_fetch_array() && $num <= $number,可能等于true。如果你在($row = mysql_fetch_array($result))附近放一些括号,它可能会有效,但你可以通过移动&amp;&amp;和到包含while内容的if语句。

看看http://php.net/manual/en/language.operators.precedence.php证实了这一点。 &&的运算符优先级高于赋值=。但是,and的优先级较低。我从来不知道!为什么,为什么,php?

答案 1 :(得分:1)

可能会尝试mysql_fetch_assoc($result)反对mysql_fetch_array($result)