2024 日本 PHP 研討會

mysqli::stmt_init

mysqli_stmt_init

(PHP 5, PHP 7, PHP 8)

mysqli::stmt_init -- mysqli_stmt_init初始化一個敘述並返回一個物件以供 mysqli_stmt_prepare 使用

說明

物件導向風格

public mysqli::stmt_init(): mysqli_stmt|false

程序風格

mysqli_stmt_init(mysqli $mysql): mysqli_stmt|false

配置並初始化一個適合 mysqli_stmt_prepare() 的敘述物件。

注意:

任何後續呼叫 mysqli_stmt 函式都會失敗,直到呼叫 mysqli_stmt_prepare() 為止。

參數

mysql

僅限程序式風格:由 mysqli_connect()mysqli_init() 返回的 mysqli 物件

返回值

返回一個物件。

另請參閱

新增註記

使用者貢獻的註記 2 則註記

Jeff C
8 年前
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);
?>

解決了問題。
mamdo7 at hotmail dot com
10 年前
您可以直接使用 $stmt = $mysqli->prepare(); 而無需 stmt-init()。我認為不需要 stmt-init。
To Top