ID:               44897
 Updated by:       [EMAIL PROTECTED]
 Reported By:      top dot bagger at bk dot ru
-Status:           Verified
+Status:           Closed
 Bug Type:         MySQLi related
 Operating System: CentOS 5
 PHP Version:      5.2.6
 Assigned To:      andrey
 New Comment:

The SP call returns more than one RSet. If you use PS then libmysql
can't handle more than one RSet out of an executed PS. If you use
mysqlnd, available from 5.3+, then you will be able to do it. Usually
you need to "eat" all result sets till the line is clear but mysqlnd
will clean if you do mysqli_stmt_close()


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

[2008-07-14 17:30:34] [EMAIL PROTECTED]

Andrey, I can reproduce this with libmysql and mysqlnd using PHP 5.3
CVS and a recent version of MySQL 5.1. Have a look, I'll send you the
test. 



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

[2008-05-27 07:02:10] top dot bagger at bk dot ru

Mysql function that I wrote returns only one result. But anyway I will
try and provide you feedback.

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

[2008-05-27 00:14:32] [EMAIL PROTECTED]

Maybe if you fetch all the results caused by the execute of the CALL
statement before you try executing another query?

e.g. while($stmta->fetch());

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

[2008-05-02 20:29:31] top dot bagger at bk dot ru

Sorry, I forgot to add my output of this:

State of user: 1prepare failed
errno: 2013 - error: Lost connection to MySQL server during query

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

[2008-05-02 20:27:03] top dot bagger at bk dot ru

Description:
------------
"prepare" method call returns false if mysql stored procedure was
prepared before

Reproduce code:
---------------
$my = new mysqli("localhost","test","test","test_db");
$stmta = $my->prepare("CALL sp_auth_user(?,?)");
$user = 'user';
$pass = 'pass';
$stmta->bind_param("ss", $user,$pass);
$stmta->execute();
$stmta->bind_result($state);
$stmta->fetch();
printf("State of user: %s\n", $state);
$stmta->close();
$stmtb = $my->prepare("SELECT userId FROM appUsers WHERE login = ?");
if ($stmtb) echo "prepare succeeded";
else {
        echo "prepare failed<br />";
        echo "errno: ", $my->errno, "  - error: ", $my->error, "<br />";
}

Expected result:
----------------
$stmtb contains mysqli_stmt object

Actual result:
--------------
$stmtb is false


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


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

Reply via email to