我希望这是一个简单的编码错误。 当尝试从数据库表中获取所有结果时,第一个结果总是丢失。即使向数据库添加和删除信息,它也总是会错过具有最低ID的结果。
$data = mysql_query("SELECT * FROM tbl_messages")
or die(mysql_error());
$info = mysql_fetch_array( $data );
while($info = mysql_fetch_array( $data ))
{
Print "<a href=\"../message/index.php?user=\">" .$info['subject']. "</a>";
echo "<hr>";
}
答案 0 :(得分:2)
您当前的代码调用mysql_fetch_array
并将结果(结果集的第一行)分配给$info
。您没有对$info
执行任何操作,并在下一行中使用另一个mysql_fetch_array
调用覆盖它。
您需要删除此行:
$info = mysql_fetch_array( $data );
答案 1 :(得分:1)
从php手册:
array mysql_fetch_array ( resource $result [, int $result_type = MYSQL_BOTH ] )
返回与获取的行对应的数组,并向前移动内部数据指针。
之后
$data = mysql_query(...)
您得到一个数组$data
,内部数据指针指向$data
的第一个元素。
mysql_fetch_array(...)
的第一次调用会提前移动内部数据点,因此它现在指向第二个元素。
然后,你的while循环在发出第一个Print之前调用mysql_fetch_array(...)
AGAIN,因此第二个元素被打印出来。
您可以通过删除此行来修复它:
$info = mysql_fetch_array( $data );
答案 2 :(得分:0)
删除第一个mysql_fetch_array
语句。
类似
$data = mysql_query("SELECT * FROM tbl_messages")
or die(mysql_error());
while($info = mysql_fetch_array( $data ))
{
Print "<a href=\"../message/index.php?user=\">" .$info['subject']. "</a>";
echo "<hr>";
}
您正在使用上述代码跳过第一个条目。
返回与获取的行对应的数组并移动 前面的内部数据指针。
这意味着当你遇到这段时间时,你已经阅读了第一行,但尚未使用它。
答案 3 :(得分:0)
我的表查询忽略了第0行(第一次出现),我也有这样的问题,现在我看到了这一点,我终于明白了发生了什么。
澄清也是可以理解的。
您要求查询_fetch_array并将其找到的内容放在$info
中。这似乎没问题。接下来,您要求剩余的行,因为您刚从可能的返回中删除了一行,它也可以完美地运行。
删除此行:
$info = mysql_fetch_array( $data );
然后从表中获取所有行。或者,如果您想知道,请按照您正在打印的方式在$info
循环之前回复while
,或者只是尝试var_dump
。