Heim >Backend-Entwicklung >PHP-Tutorial >Warum wirft „mysqli_stmt::bind_result()' den Fehler „Nicht übereinstimmende Bindungsvariablen' aus?

Warum wirft „mysqli_stmt::bind_result()' den Fehler „Nicht übereinstimmende Bindungsvariablen' aus?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-11 13:09:11641Durchsuche

Why Does `mysqli_stmt::bind_result()` Throw a

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn