#36949 [Fbk->Opn]: mysqli->fetch_object cripples mysqli object so that it can't be closed correctl

From: Date: Wed, 05 Apr 2006 12:42:40 +0000
Subject: #36949 [Fbk->Opn]: mysqli->fetch_object cripples mysqli object so that it can't be closed correctl
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-95337@lists.php.net to get a copy of this message
ID: 36949 User updated by: jax at student dot unibe dot ch Reported By: jax at student dot unibe dot ch -Status: Feedback +Status: Open Bug Type: MySQLi related Operating System: Gentoo Linux PHP Version: 5.1.2 New Comment: I cannot currently install CVS PHP on the production server, perhaps somebody could please test this and feedback so we can resolve this issue. Thank you in advance. Gabe Jackson Previous Comments: ------------------------------------------------------------------------ [2006-04-02 16:00:00] tony2001@php.net Please try using this CVS snapshot: http://snaps.php.net/php5.1-latest.tar.gz For Windows: http://snaps.php.net/win32/php5.1-win32-latest.zip ------------------------------------------------------------------------ [2006-04-02 15:14:56] jax at student dot unibe dot ch Description: ------------ Test Case for mysqli->fetch_object bug class A and class B contain the exact same code Using mysqli->fetch_object causes warning when the destructor of B is called (mysqli->close()): Warning: mysqli::close() [function.close]: Couldn't fetch mysqli in /home/path/to/php/test.php on line 56 (destructor of B) If mysqli->fetch_assoc is used instead of fetch_object, it works fine. Replace $row = $result->fetch_object(); echo $row->my_time; With $row = $result->fetch_assoc(); echo $row['my_time']; to test something must be wrong with fetch_object Reproduce code: --------------- class A { private $mysqli; public function __construct() { $this->mysqli = new mysqli("localhost", "u", "p", "test"); $result = $this->mysqli->query("SELECT NOW() AS my_time"); // -------- Line Causing Problem ------ $row = $result->fetch_object(); echo $row->my_time."<br>"; $result->close(); } public function __destruct() { $this->mysqli->close(); } } class B { private $mysqli; public function __construct() { $this->mysqli = new mysqli("localhost", "u", "p", "test"); $result = $this->mysqli->query("SELECT NOW() AS my_time"); // -------- Line Causing Problem -------- $row = $result->fetch_object(); echo $row->my_time."<br>"; $result->close(); } public function __destruct() { $this->mysqli->close(); } } $A = new A(); $B = new B(); Expected result: ---------------- $this->mysqli->close() should work without throwing an error Actual result: -------------- 2006-04-02 15:01:36 2006-04-02 15:01:36 Warning: mysqli::close() [function.close]: Couldn't fetch mysqli in /home/path/to/test.php on line 56 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=36949&edit=1

« previous php.bugs (#95337) next »