Nicht übereinstimmende Bind-Variablen in MySQLi Prepared Statement
Beim Versuch, ein Anmeldeformular mithilfe einer vorbereiteten Anweisung in PHP zu implementieren, stoßen einige Entwickler auf Frustration Fehler: „mysqli_stmt::bind_result(): Die Anzahl der Bindevariablen stimmt nicht mit der Anzahl der vorbereiteten Felder überein Anweisung."
Dieser Fehler tritt auf, wenn die SQL-Abfrage und die Funktion bind_result() eine Nichtübereinstimmung in der Anzahl der Felder enthalten, die ausgewählt und Variablen zugewiesen werden. Lassen Sie uns anhand des bereitgestellten Codes untersuchen, wie dieses Problem behoben werden kann.
Im bereitgestellten Code:
$stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?"); $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($password, $username);
Das Problem liegt in der SQL-Abfrage. Bei der Auswahl mehrerer Felder wird anstelle eines Kommas das Schlüsselwort „AND“ verwendet. Die korrekte Syntax zum Auswählen mehrerer Felder besteht darin, sie durch ein Komma zu trennen:
$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
Außerdem sollte die Funktion bind_result() mit der Anzahl der ausgewählten Felder übereinstimmen. In diesem Fall werden zwei Felder ausgewählt, daher sollte die Funktion bind_result() zwei Variablen haben:
$stmt->bind_result($username, $password);
Durch die Korrektur der Auswahlsyntax und die Ausrichtung der Funktion bind_result() an die Anzahl der ausgewählten Felder wird das Problem behoben Nicht übereinstimmende Bindungsvariablen werden aufgelöst, sodass das Anmeldeformular ordnungsgemäß funktioniert.
Das obige ist der detaillierte Inhalt vonWarum gibt meine vorbereitete MySQLi-Anweisung den Fehler „Anzahl der Bindevariablen stimmt nicht mit der Anzahl der Felder überein' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!