stmt_init() 似乎清除了数据库连接上的先前(可能是错误的)结果,这意味着您不一定需要使用它,但它可以使代码更健壮。
在一个 PHPUnit 测试中,我有一系列针对同一个连接的准备好的查询。其中一个从 SELECT 中获取了一行,但没有继续获取直到它耗尽了连接,所以它留下了一些陈旧的结果。当下一个查询执行此操作时
<?php
$db = $this->getConnection()->getDbConnection();
$preparedQuery = $db->prepare ($query);
?>
prepare() 调用生成一个错误:“无法准备查询:命令不同步;您现在无法运行此命令。”更改为以下内容
<?php
$db = $this->getConnection()->getDbConnection();
$preparedQuery = $db->stmt_init();
$preparedQuery->prepare ($query);
?>
解决了问题。