note 65378 added to function.pdostatement-closecursor

From: Date: Sat, 29 Apr 2006 20:23:08 +0000
Subject: note 65378 added to function.pdostatement-closecursor
Groups: php.notes 
Request: Send a blank email to php-notes+get-110122@lists.php.net to get a copy of this message
When running multiple queries one after another especially when stored procedures are involved one must release all result sets and fetch all rows in each result set for a stored procedure before moving onto the next query. This is important because a stored procedure returns an extra (empty) result set as a result of having called the procedure itself. In my case calling PDOStatement :: closeCursor() did not work (on php-5.1.3-rc2) and I was presented with the following error message: "SQLSTATE[HY000]: General error: 2013 Lost connection to MySQL server during query" upon trying to PDO :: prepare() my second query. So I used the following drop in replacement within one of my classes which fixed the issue. <?php /** * @param PDOStatement $oStm */ public static function closeCursor($oStm) { do $oStm->fetchAll(); while ($oStm->nextRowSet()); } ?> ---- Server IP: 64.71.164.2 Probable Submitter: 85.133.19.16 ---- X-Spam-Status: No, hits=3.1 required=5.0 tests=DATE_MISSING,FROM_NO_LOWER autolearn=no version=2.64 ---- Manual Page -- http://www.php.net/manual/en/function.pdostatement-closecursor.php Edit -- http://master.php.net/note/edit/65378 Del: integrated -- http://master.php.net/note/delete/65378/integrated Del: useless -- http://master.php.net/note/delete/65378/useless Del: bad code -- http://master.php.net/note/delete/65378/bad+code Del: spam -- http://master.php.net/note/delete/65378/spam Del: non-english -- http://master.php.net/note/delete/65378/non-english Del: in docs -- http://master.php.net/note/delete/65378/in+docs Del: other reasons-- http://master.php.net/note/delete/65378 Reject -- http://master.php.net/note/reject/65378 Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#110122) next »