Heim >Backend-Entwicklung >PHP-Tutorial >Warum wirft „mysqli_stmt::bind_result()' einen „Binding Mismatch'-Fehler in PHP-Anmeldeformularen aus?
Mysqli_stmt::bind_result()-Fehler: Bindungskonflikt
Beim Versuch, ein PHP-Anmeldeformular mithilfe einer vorbereiteten Anweisung zu implementieren, kann es zu Problemen kommen der folgende Fehler:
mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement
Dieser Fehler weist auf eine Diskrepanz zwischen der Anzahl der in angegebenen Variablen hin bind_result() und die Anzahl der Felder, die von der vorbereiteten Anweisung zurückgegeben werden. Um dieses Problem zu beheben, untersuchen Sie den folgenden Codeausschnitt:
$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();
Grundursache:
Die falsche Syntax in der SELECT-Anweisung ist die Grundursache des Fehlers. Die korrekte Syntax sollte sein:
SELECT username, password FROM users WHERE username = ?
Lösung:
Das Problem kann gelöst werden, indem die Felder in der SELECT-Anweisung durch ein Komma anstelle von „AND“ getrennt werden. " Der richtige Code wird unten bereitgestellt:
$mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
Durch Sicherstellen der korrekten Syntax in der SELECT-Anweisung und Beobachten, dass die Anzahl der Bindevariablen mit der Anzahl der Felder in der vorbereiteten Anweisung übereinstimmt, wird der mysqli_stmt::bind_result()-Fehler angezeigt kann verhindert werden.
Das obige ist der detaillierte Inhalt vonWarum wirft „mysqli_stmt::bind_result()' einen „Binding Mismatch'-Fehler in PHP-Anmeldeformularen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!