Heim >Backend-Entwicklung >PHP-Tutorial >Warum löst „mysqli_stmt::bind_result()' einen Fehler aus, wenn die Anzahl der Bindungsvariablen nicht mit den Ergebnissatzspalten übereinstimmt?
Bindungsvariablenkonflikt in mysqli_stmt::bind_result()
In PHP, wenn eine vorbereitete Anweisung mit mysqli_stmt::bind_result() ausgeführt wird, Die Anzahl der Bindevariablen muss der Anzahl der Felder im Ergebnissatz entsprechen. Wenn sie nicht übereinstimmen, wird der Fehler „mysqli_stmt::bind_result(): Die Anzahl der Bindevariablen entspricht nicht der Anzahl der Felder in der vorbereiteten Anweisung“ ausgegeben.
Um dieses Problem zu beheben, stellen Sie sicher, dass die Anzahl der Bind-Variablen in bind_result() richtet sich nach der Anzahl der von der Abfrage zurückgegebenen Spalten. Betrachten Sie den folgenden PHP-Code:
$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?"); $username = $_POST['name']; $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($password, $username); // Incorrect number of bind variables $stmt->fetch();
In diesem Beispiel ruft die vorbereitete Anweisung zwei Spalten ab, Benutzername und Passwort. Allerdings wird in bind_result() nur eine Bindevariable, $username, angegeben. Um dies zu korrigieren, fügen Sie die zweite Bindevariable für $password hinzu:
$stmt->bind_result($username, $password); // Correct number of bind variables
Die Syntax für SELECT-Anweisungen lautet: SELECT field1, field2, ... fieldN FROM table_name WHERE .... Jedes Feld muss getrennt werden durch ein Komma, nicht durch eine UND-Bedingung.
Das obige ist der detaillierte Inhalt vonWarum löst „mysqli_stmt::bind_result()' einen Fehler aus, wenn die Anzahl der Bindungsvariablen nicht mit den Ergebnissatzspalten übereinstimmt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!