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);
?>
解決了問題。