首頁 >後端開發 >php教程 >當綁定變數的數量與結果集列不符時,為什麼`mysqli_stmt::bind_result()`會拋出錯誤?

當綁定變數的數量與結果集列不符時,為什麼`mysqli_stmt::bind_result()`會拋出錯誤?

Susan Sarandon
Susan Sarandon原創
2024-12-11 09:01:09197瀏覽

Why Does `mysqli_stmt::bind_result()` Throw an Error When the Number of Bind Variables Doesn't Match the Result Set Columns?

mysqli_stmt::bind_result() 中的綁定變數不符合

在PHP 中,當使用mysql_stst::bind_result(st) 執行準備好的語句時,綁定變數的數量必須與結果集中的欄位數量相對應。如果它們不匹配,則會拋出錯誤「mysqli_stmt::bind_result(): Number of Bind Variable does not match number of fields in prepared statements」。

要解決此問題,請確保該數量bind_result() 中的綁定變數的數量與查詢傳回的列數一致。考慮以下 PHP 程式碼:

$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
$username = $_POST['name'];
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($password, $username); // Incorrect number of bind variables
$stmt->fetch();

在此範例中,準備好的語句會擷取兩列:使用者名稱和密碼。然而,bind_result() 中只指定了一個綁定變數 $username。若要修正此問題,請為$password 新增第二個綁定變數:

$stmt->bind_result($username, $password); // Correct number of bind variables

SELECT 語句的語法為: SELECT field1, field2, ... fieldN FROM table_name WHERE .... 每個欄位必須分隔開用逗號,而不是AND 條件。

以上是當綁定變數的數量與結果集列不符時,為什麼`mysqli_stmt::bind_result()`會拋出錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn