Heim >Datenbank >MySQL-Tutorial >Warum löst „mysqli_stmt::bind_result()' einen Fehler bei der Nichtübereinstimmung der Bindungsvariablen aus?
Bindungsvariablenkonflikt in PHPs mysqli_stmt::bind_result()
Beim Versuch, sich über ein PHP-Anmeldeformular mit einer vorbereiteten Anweisung anzumelden, Du stößt auf das Fehler:
mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement
Diagnose:
Dieser Fehler tritt auf, wenn die Anzahl der in bind_param() angegebenen Bind-Variablen nicht mit der Anzahl der von der vorbereiteten zurückgegebenen Felder übereinstimmt Aussage.
Lösung:
In Ihrem Code:
$stmt->prepare("SELECT username AND password FROM users WHERE username = ?");
Die vorbereitete Anweisung ruft zwei Felder ab, Benutzername und Passwort, aber Ihre nachfolgenden bind_param()- und bind_result()-Aufrufe geben nur eine Bindevariable an, $username.
Zur Auflösung Dazu müssen Sie mehrere Bindungsvariablen und -felder korrekt angeben:
$mysqli->prepare("SELECT username, password FROM users WHERE username = ?"); $username = $_POST['name']; $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($username, $password);
Das obige ist der detaillierte Inhalt vonWarum löst „mysqli_stmt::bind_result()' einen Fehler bei der Nichtübereinstimmung der Bindungsvariablen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!