Mysqli_stmt::bind_result() 錯誤:綁定不符
當嘗試使用準備好的語句實現 PHP登入表單時,使用者可能會遇到以下錯誤:
mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement
此錯誤表示之間存在差異bind_result() 中指定的變數數量以及準備好的語句傳回的欄位數量。要解決此問題,請檢查以下程式碼片段:
$mysqli = new mysqli("localhost", "root", "", "security"); $stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?"); $username = $_POST['name']; $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($password, $username); $stmt->fetch();
根本原因:
SELECT 語句中的錯誤語法是錯誤的根本原因。正確的語法應該是:
SELECT username, password FROM users WHERE username = ?
解決方案:
可以用逗號而不是“AND”分離SELECT 語句中的字段來解決該問題。 」下面提供了正確的程式碼:
$mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
透過確保SELECT 語句中的語法正確並觀察綁定變數的數量與準備好的語句中的欄位數量匹配,mysqli_stmt::bind_result() 錯誤是可以預防的。
以上是為什麼 `mysqli_stmt::bind_result()` 在 PHP 登入表單中拋出「綁定不符」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!