Verstehen des Fehlers in mysqli_stmt::bind_result()
Beim Arbeiten mit vorbereiteten Anweisungen in der MySQLi-Erweiterung von PHP kann der Fehler „ mysqli_stmt::bind_result(): Die Anzahl der Bindevariablen stimmt nicht mit der Anzahl der Felder in der vorbereiteten Anweisung überein.“ Dieses Problem tritt auf, wenn die Anzahl der von Ihrer Abfrage erwarteten Variablen nicht mit der Anzahl der an das Ergebnis gebundenen Variablen übereinstimmt.
Analyse des bereitgestellten Codes
Im bereitgestellten Code , das Problem lag bei der SELECT-Anweisung, die zur Vorbereitung der Anweisung verwendet wurde:
$stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?");
In dieser Anweisung spezifizierte die SELECT-Klausel zwei Felder, „Benutzername“ und „Passwort.“ Es wurde jedoch nur eine Bindevariable verwendet ($username):
$stmt->bind_param('s', $username);
Problem lösen
Um das Problem zu beheben, sollte die SELECT-Klausel so geändert werden, dass sie Folgendes enthält: nur die Felder, die an das Ergebnis gebunden sind. In diesem Fall ist nur „Benutzername“ erforderlich:
$stmt = $mysqli->prepare("SELECT username FROM users WHERE username = ?");
Mit dieser Änderung stimmt die Anzahl der Felder in der Abfrage mit der Anzahl der Bindevariablen überein und der Fehler wird behoben.
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWarum schlägt „mysqli_stmt::bind_result()' fehl, wenn die Anzahl der Bindungsvariablen nicht mit der Anzahl der ausgewählten Felder übereinstimmt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!