关闭语句后的 mysqli + xdebug 断点导致许多警告

2022-08-30 15:43:42

我有一段这样的代码:

$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

这完全可以正常工作。我得到了我期望的结果,没有错误或任何不应该发生的事情。

但是,如果我将断点(Xdebug 2.2.5 / 2.2.6 / 2.2.8 / 2.3.2和PHP 5.5.3 / 5.5.15 / 5.6.0 / 5.6.6 / 5.6.10)设置为一行,我收到许多警告,例如$stmt->close();

尚不允许访问属性

无法获取mysqli_stmt

我以为我错过了关闭另一个mysqli语句,但我得到了所有结果。我的代码中似乎没有问题...

有没有办法摆脱这种错误的警告?

更新:此问题在 PHP 7.0.1 / Xdebug 2.4.0 RC3 中仍然存在。


答案 1

http://bugs.xdebug.org/view.php?id=900 https://bugs.php.net/bug.php?id=60778
报告了
一些类似的问题

摆脱此消息的一种方法是添加

unset($stmt);

在关闭语句之后和断点之前。如果这没有帮助,您还应该添加

unset($connection);

在关闭连接后,如@Martin在注释中提到的那样。

这并不能解决问题本身,但让你继续你的工作,直到这个问题可以修复一段时间。

编辑:现在还有一个报告的问题:)

编辑:这似乎是MySQLi驱动程序中的一个错误,如这里报道的那样。

编辑:看起来这个错误不会出现,如果你使用PDO。因此,这可能是切换到PDO的另一个原因。


推荐