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中文網其他相關文章!