【问题标题】:mysql_fetch_array returns nothing while mysql_num_rows returns 4 in phpmysql_fetch_array 什么都不返回,而 mysql_num_rows 在 php 中返回 4
【发布时间】:2011-08-22 22:16:06
【问题描述】:

我在 php 中有一些代码可以按排序顺序访问 mysql 数据库,然后在表格中打印出信息。但是,无论何时调用 mysql_fetch_array,该函数什么都不返回,即使 mysql_num_rows 为 4。也就是说,如果我执行 $row=mysql_fetch_array($result);,$row['name'] 是 "",即使肯定有表中的名称列。一个sn-p的代码如下:

<?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 表具有列名称、分数、日期等。 任何帮助表示赞赏。 谢谢, -迈克尔。

【问题讨论】:

  • 你能格式化你的代码吗?选择您的代码并按{} 按钮即可。
  • &amp;&amp; $num&lt;=$number 为什么需要这部分?
  • 你能不能在 while 循环开始后做一个 var_dump($row) 并显示输出。

标签: php mysql


【解决方案1】:

也许可以试试mysql_fetch_assoc($result) 而不是mysql_fetch_array($result)

【讨论】:

    【解决方案2】:

    $row 没有设置为mysql_fetch_array() 的结果,而是设置为mysql_fetch_array() &amp;&amp; $num &lt;= $number,这可能等于true。如果您在 ($row = mysql_fetch_array($result)) 周围加上一些括号,它可能会起作用,但您可以通过将 && 移动到包含 while 内容的 if 语句来省去一些心痛。

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

    【讨论】:

    • 是的,这行得通——忽略我之前对另一篇帖子的评论,我的屏幕阅读器转到错误的编辑字段:)。
    猜你喜欢
    • 1970-01-01
    • 2011-09-13
    • 2011-12-05
    • 2015-11-18
    • 2023-04-10
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多