From:             rphp at ryanjameson dot com
Operating system: windows 2000
PHP version:      5.0.2
PHP Bug Type:     ODBC related
Bug description:  odbc_fetch_row($rs,0) does not reset dataset.

Description:
------------
Since upgrading to 5.0 I've found that looping through a recordset ($rs)
via odbc_fetch_row and then attempting to reuse the recordset by calling
odbc_fetch_row($rs,0) seems to put me at the first record of the recordset
versus giving me a "reset" recordset. The result is a subsequent
odbc_fetch_row then puts me at the second item in the record set which is
not how it behaved in previous versions. 

In previous versions calling odbc_fetch_row($rs,0) followed by
odbc_fetch_row($rs) would leave you on the first row since the
odbc_fetch_row($rs,0) had in effect reset the recordset. This ability is
mentioned in the user contributed notes for this function.

I have a rather large and intracate library partially built around the
ability to "reset" recordsets. I have been unable to find another way to
do this. Since installing PHP 5.0 all results that relied on this are
missing the first row. :-\

Reproduce code:
---------------
create a simple odbc record set ($rs) by selecting from any table then...

odbc_fetch_row($rs); //moves the pointer
//in past this would reset the pointer
odbc_fetch_row($rs,0); 
$cnt = 0;
while (fetch($rs))
  $cnt++;
echo "$cnt is one less than the actual result count because it started on
the second row!";

Expected result:
----------------
I expect $cnt to equal the number of rows in the result set because
odbc_fetch_row($rs,0) should reset the set, not move the pointer to the
first row.

Actual result:
--------------
$cnt is one less than the result count.

-- 
Edit bug report at http://bugs.php.net/?id=30876&edit=1
-- 
Try a CVS snapshot (php4):   http://bugs.php.net/fix.php?id=30876&r=trysnapshot4
Try a CVS snapshot (php5.0): 
http://bugs.php.net/fix.php?id=30876&r=trysnapshot50
Try a CVS snapshot (php5.1): 
http://bugs.php.net/fix.php?id=30876&r=trysnapshot51
Fixed in CVS:                http://bugs.php.net/fix.php?id=30876&r=fixedcvs
Fixed in release:            http://bugs.php.net/fix.php?id=30876&r=alreadyfixed
Need backtrace:              http://bugs.php.net/fix.php?id=30876&r=needtrace
Need Reproduce Script:       http://bugs.php.net/fix.php?id=30876&r=needscript
Try newer version:           http://bugs.php.net/fix.php?id=30876&r=oldversion
Not developer issue:         http://bugs.php.net/fix.php?id=30876&r=support
Expected behavior:           http://bugs.php.net/fix.php?id=30876&r=notwrong
Not enough info:             
http://bugs.php.net/fix.php?id=30876&r=notenoughinfo
Submitted twice:             
http://bugs.php.net/fix.php?id=30876&r=submittedtwice
register_globals:            http://bugs.php.net/fix.php?id=30876&r=globals
PHP 3 support discontinued:  http://bugs.php.net/fix.php?id=30876&r=php3
Daylight Savings:            http://bugs.php.net/fix.php?id=30876&r=dst
IIS Stability:               http://bugs.php.net/fix.php?id=30876&r=isapi
Install GNU Sed:             http://bugs.php.net/fix.php?id=30876&r=gnused
Floating point limitations:  http://bugs.php.net/fix.php?id=30876&r=float
MySQL Configuration Error:   http://bugs.php.net/fix.php?id=30876&r=mysqlcfg

Reply via email to