ID:               39759
 Updated by:       [EMAIL PROTECTED]
 Reported By:      mike at we11er dot co dot uk
-Status:           Open
+Status:           Feedback
 Bug Type:         PDO related
 Operating System: Windows XP
 PHP Version:      5.2.0
 New Comment:

Latest version enabled buffered queries by default so your 
code will work.


Previous Comments:
------------------------------------------------------------------------

[2006-12-06 18:03:45] mike at we11er dot co dot uk

I'm sorry to reopen again, but I think the "optional feature not
implemented" is just wrong. That would imply that stored procedures are
an optional feature. If so, then that is unnacceptable.

I have some code to reproduce the error:

<?php

/*

CREATE PROCEDURE Test()
BEGIN
  SELECT 0;
  SELECT 1;
END

*/

class DBWriter extends PDO
{
        public function __construct()
        {
            try
            {
                parent::__construct("mysql:host=localhost;dbname=test","user",
"password");

                $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            }
            catch (PDOException $e) {
                        throw new Exception("Failed to connect: " . 
$e->getMessage());
                }
        }
}

$db = new DBWriter();

$stmt = $db->prepare("CALL Test()");
$stmt->execute();
$stmt->fetchAll();

// run the query again and we get an error "Cannot execute queries
while other unbuffered queries are active."
// but we can't fetch all results from the previous query because
nextRowset isn't defined
$stmt->execute();


?>

I just want the status of this to be elevated - I think "feature
request" is just plain wrong. I want to hear an official opinion on
this...

------------------------------------------------------------------------

[2006-12-06 17:55:17] [EMAIL PROTECTED]

The error message "Optional feature not implemented" means that the
feature is optional and it's not implemented yet.
We already have a request for this feature, no need for another one,
thank you.


------------------------------------------------------------------------

[2006-12-06 17:46:42] mike at we11er dot co dot uk

I'm reopening this because it isn't a feature request, it's a /bug/.
You cannot use stored procedures. That is a bug! And the bug
report/feature request you mention has been idling for months.

This is an important issue and I have yet to hear any acknowledgement
that this is an issue worth fixing. It's getting rather annoying now.

------------------------------------------------------------------------

[2006-12-06 17:14:35] [EMAIL PROTECTED]

Duplicate of feature request #38842.

------------------------------------------------------------------------

[2006-12-06 17:09:57] mike at we11er dot co dot uk

Description:
------------
On the windows version of pdo_mysql, the nextRowset() method isn't
implemented for PDOStatement.

This means that when executing a stored procedure, it is impossible to
fetch all result sets, because all stored procedures return multiple
result sets (one contains a return value of some sort).

Because you can't fetch all result sets, all subsequent queries are
broken, with the following error/exception:

SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other
unbuffered queries are active. Consider using PDOStatement::fetchAll().

nextRowset() is /required/ to properly use stored procedures.



Reproduce code:
---------------
It should be possible to fetch all results from a stored procedure with
code like this:

$stmt = $db->prepare("CALL SomeProcedure()");
$stmt->execute();

do
{
  $stmt->fetchAll();
} while ($stmt->nextRowset());

Intead the error message:

SQLSTATE[HYC00]: Optional feature not implemented

Is displayed. But I don't see how this can be optional in this case, it
is required.



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=39759&edit=1

Reply via email to