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);
?>
解决了这个问题。