如何在不推进指针的情况下测试更多数据?

时间:2013-08-19 10:06:27

标签: php mysql

有没有办法检查从MySQL返回的记录集上的文件结尾(用PHP)?

我想做以下事情:

while (!mysql_eof($result) {

    $row = mysql_fetch_array($result);
}

我不想在主循环中使用mysql_fetch_array(),因为我需要在循环内部进行进一步的读取,并且不希望记录集当前记录计数器更新即。我不想推进当前的指针。

3 个答案:

答案 0 :(得分:2)

编写您的查询,如

$result = mysql_query("SELECT * FROM MyTable ORDER BY id DESC LIMIT 0,1");
$row = mysql_fetch_assoc($result);
print_r($row);

并且由于整个mysql_*扩展程序(提供带有前缀ext/mysql PHP命名的所有函数)从mysql_*开始正式弃用,并尝试避免PHP v5.5.0语句将来删除

您可以更好地使用其他两个MySQL扩展程序:MySQLiPDO_MySQL,其中任何一个都可以用来代替ext/mysql

答案 1 :(得分:0)

$result = mysql_query("SELECT * FROM table");
$num_rows = mysql_num_rows($result);
$counter = 1;
while($counter<=$num_rows)
{ 
//There is still more data
//Do whatever to the current row
$counter++;
}

希望这样做。如果没有,我不知道会发生什么。

答案 2 :(得分:0)

mysql_eof()已弃用。可以使用mysql_errno()mysql_error()代替。

mysql_eof()确定是否已读取结果集的最后一行。

如果从成功调用mysql_store_result()获取结果集,则客户端将在一次操作中接收整个集合。在这种情况下,从mysql_fetch_row()返回NULL总是表示已达到结果集的结尾,并且无需调用mysql_eof()。与mysql_store_result(), mysql_eof()一起使用时,始终返回true。

结帐:http://dev.mysql.com/doc/refman/4.1/en/mysql-eof.html了解详情。