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