Description:
------------
Preparing a statement with the PDO_ATTR_CURSOR =>
PDO_CURSOR_SCROLL driver option doesn't work with MySQL.
Reproduce code:
---------------
$PDO = new PDO(
"mysql:dbname=test;host=127.0.0.1",
'user', 'pass' );
$statement = $PDO->prepare("select id from table",
array(PDO_ATTR_CURSOR => PDO_CURSOR_SCROLL) );
$statement->execute();
print_r($statement->fetch( PDO_FETCH_ASSOC,
PDO_FETCH_ORI_ABS, 1 ));
print_r($statement->fetch( PDO_FETCH_ASSOC,
PDO_FETCH_ORI_ABS, 1 ));
exit;
Expected result:
----------------
I would expect to see the same row output twice. If this is
not a support driver option, then I would expect and error or
exception thrown (yes, exceptions are enabled).
Actual result:
--------------
Two different rows. The PDO_FETCH_ORI_ABS arguments are
seemingly ignored.
Thanks for the info. Constant problem resolved, but the
scrollable cursor problem remains. New repro code:
$PDO = new PDO(
"mysql:dbname=test;host=127.0.0.1",
'user', 'pass' );
$statement = $PDO->prepare("select id from table",
array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL) );
$statement->execute();
print_r($statement->fetch( PDO::FETCH_ASSOC,
PDO::FETCH_ORI_ABS, 1 ));
print_r($statement->fetch( PDO::FETCH_ASSOC,
PDO::FETCH_ORI_ABS, 1 ));
exit;
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php
MySQL does not support cursors and the driver cannot emulate them for you.
[2005-10-12 20:08 UTC] stewey at ambitious dot ca
Ok. Perhaps you should throw an exception when we give a
cursor attribute to a mysql pdo driver. This should also be
doc'd.