Uncategorized

How to reset the cursor in MySQL recordset with PHP.

I’ve run into this multiple times, and I always have to look it up so I’m going to write about it. If you have a recordset returned and you’ve looped through it once and need to loop through it again, you can use the mysql_data_seek() function. This will reset the pointer and it will be available again for another while loop.

$row = 0;
if(!mysql_data_seek($result,$row))continue;


I’ve run into this multiple times, and I always have to look it up so I’m going to write about it. If you have a recordset returned and you’ve looped through it once and need to loop through it again, you can use the mysql_data_seek() function. This will reset the pointer and it will be available again for another while loop.

$row = 0;
if(!mysql_data_seek($result,$row))continue;

Here is from PHP.net’s function manual:

mysql_data_seek

(PHP 3, PHP 4, PHP 5)
mysql_data_seek -- Move internal result pointer
Description
bool mysql_data_seek ( resource result, int row_number )

mysql_data_seek() moves the internal row pointer of the MySQL result associated with the specified result identifier to point to the specified row number. The next call to a MySQL fetch function, such as mysql_fetch_assoc(), would return that row.

row_number starts at 0. The row_number should be a value in the range from 0 to mysql_num_rows() - 1. However if the result set is empty (mysql_num_rows() == 0), a seek to 0 will fail with a E_WARNING and mysql_data_seek() will return FALSE.