Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mysqli + xdebug breakpoint after closing statement result in many warnings

Tags:

php

xdebug

mysqli

I have a piece of code like this:

$conn = new mysqli($host, $username, $passwd, $dbname);  ...  $stmt = $conn->prepare('SELECT ...'); $stmt->bind_param(...); $stmt->execute(); $stmt->bind_result(...); while($stmt->fetch()) {     // do something here } $stmt->close();  ...  // do something more here that has absolutely nothing to do with $stmt 

This works perfectly fine. I get the results I expected, there are no errors or anything that is not supposed to happen.

But if I set a break point (Xdebug 2.2.5 / 2.2.6 / 2.2.8 / 2.3.2 and PHP 5.5.3 / 5.5.15 / 5.6.0 / 5.6.6 / 5.6.10) to a line after $stmt->close();, I get many warnings like

Property access is not allowed yet

or

Couldn't fetch mysqli_stmt

I thought I missed to close another mysqli statement, but I get all results. There seems to be just no problem in my code...

Is there a way to get rid of this wrong warnings?

Update: This problem still exist in PHP 7.0.1 / Xdebug 2.4.0 RC3.

like image 775
AbcAeffchen Avatar asked Aug 19 '14 06:08

AbcAeffchen


2 Answers

There are some similar issues reported
http://bugs.xdebug.org/view.php?id=900
https://bugs.php.net/bug.php?id=60778

One way to get rid of this messages is to add

unset($stmt); 

after closing the statement and before the breakpoint. If this does not help, you should also add

unset($connection); 

after closing the connection as mentioned by @Martin in the comments.

This does not solve the problem itself, but let you go on with your work until this may be fixed some time.

EDIT: Now there is also a reported issue :)

EDIT: This seems to be a bug in the MySQLi driver as reported here.

EDIT: Looks like this bug does not appear if you use PDO. So this is maybe an other reason to switch to PDO.

like image 161
AbcAeffchen Avatar answered Sep 29 '22 05:09

AbcAeffchen


FWIW, this was a bug in PHP (https://bugs.php.net/bug.php?id=67348&edit=1), which should be fixed for PHP 7.4: https://github.com/php/php-src/commit/579562176b71820ad49d43b2c841642fef12fe57

like image 20
Derick Avatar answered Sep 29 '22 05:09

Derick