首頁 >後端開發 >php教程 >為什麼我的 MySQLi 準備語句會拋出「綁定變數數量與欄位數量不符」錯誤?

為什麼我的 MySQLi 準備語句會拋出「綁定變數數量與欄位數量不符」錯誤?

Patricia Arquette
Patricia Arquette原創
2024-12-15 21:30:26316瀏覽

Why Does My MySQLi Prepared Statement Throw a

MySQLi 準備語句中的綁定變數不符

當嘗試在 PHP中使用準備語句實現登入表單時,一些開發人員遇到了令人沮喪的問題錯誤:「mysqli_stmt::bind_result():綁定變數的數量與準備好的欄位數量不符語句。」

當SQL 查詢和bind_result() 函數選擇並指派給變數的欄位數量不符時,就會出現此錯誤。讓我們根據提供的程式碼來看看如何解決這個問題。

在提供的程式碼中:

$stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?");
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($password, $username);

問題出在 SQL 查詢。選擇多個欄位時,使用“AND”關鍵字代替逗號。選擇多個欄位的正確語法是用逗號分隔它們:

$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");

此外,bind_result() 函數應與所選欄位的數量相符。在這種情況下,選擇了兩個字段,因此bind_result()函數應該有兩個變數:

$stmt->bind_result($username, $password);

透過更正選擇語法並將bind_result()函數與所選字段的數量對齊,問題不匹配的綁定變數將得到解決,從而使登入表單能夠正常運作。

以上是為什麼我的 MySQLi 準備語句會拋出「綁定變數數量與欄位數量不符」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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