我有一段这样的代码:
$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();,我收到很多警告
Property access is not allowed yet
要么
Couldn’t fetch mysqli_stmt
我以为我错过了关闭另一个mysqli声明,但我得到了所有结果.在我的代码中似乎没有问题……
有没有办法摆脱这个错误的警告?
更新:此问题仍存在于PHP 7.0.1 / Xdebug 2.4.0 RC3中.
解决方法:
报告了一些类似的问题
http://bugs.xdebug.org/view.php?id=900
https://bugs.php.net/bug.php?id=60778
摆脱这些消息的一种方法是添加
unset($stmt);
在关闭语句之后和断点之前.如果这没有帮助,您还应该添加
unset($connection);
关闭@Martin在评论中提到的连接后.
这并没有解决问题本身,但让你继续你的工作,直到可以修复一段时间.
编辑:现在还有一个reported issue