Heim >Backend-Entwicklung >PHP-Tutorial >Warum wirft „mysqli_stmt::bind_result()' den Fehler „Nicht übereinstimmende Bindungsvariablen' aus?
mysqli_stmt::bind_result(): Nicht übereinstimmende Bind-Variablen vs. vorbereitete Anweisungsfelder
Frage:
Beim Versuch, eine vorbereitete Anweisung mit mysqli_stmt auszuführen, Ich stoße auf den Fehler: „mysqli_stmt::bind_result(): Die Anzahl der Bindevariablen stimmt nicht mit der Anzahl der Felder in der vorbereiteten Anweisung überein.“ Warum erhalte ich diesen Fehler?
Codebeispiel:
$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();
Antwort:
Der Fehler, auf den Sie stoßen Tritt auf, wenn die Anzahl der in bind_result() angegebenen Variablen nicht mit der Anzahl der Spalten übereinstimmt, die von der vorbereiteten Anweisungsabfrage zurückgegeben werden. In Ihrem Beispiel versuchen Sie, zwei Variablen an eine Abfrage zu binden, die nur eine Spalte zurückgibt.
Um dieses Problem zu beheben, sollte die Abfrage im richtigen Format für den Vorgang geschrieben werden. Die richtige Syntax für die Auswahl mehrerer Felder besteht darin, sie durch Kommas zu trennen, nicht durch AND:
$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
Sobald die Abfrage korrigiert ist, kann die Methode bind_result() verwendet werden, um die Variablen korrekt an das Ergebnis zu binden:
$stmt->bind_result($username, $password);
Das obige ist der detaillierte Inhalt vonWarum wirft „mysqli_stmt::bind_result()' den Fehler „Nicht übereinstimmende Bindungsvariablen' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!