Heim > Backend-Entwicklung > PHP-Tutorial > Warum schlägt „mysqli_stmt::bind_result()' fehl, wenn die Anzahl der Bindungsvariablen nicht mit der Anzahl der ausgewählten Felder übereinstimmt?

Warum schlägt „mysqli_stmt::bind_result()' fehl, wenn die Anzahl der Bindungsvariablen nicht mit der Anzahl der ausgewählten Felder übereinstimmt?

Mary-Kate Olsen
Freigeben: 2024-12-21 18:14:10
Original
918 Leute haben es durchsucht

Why Does `mysqli_stmt::bind_result()` Fail When the Number of Bind Variables Doesn't Match the Number of Selected Fields?

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 = ?");
Nach dem Login kopieren

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);
Nach dem Login kopieren

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 = ?");
Nach dem Login kopieren

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

  • Stellen Sie bei der Verwendung mehrerer Bind-Variablen sicher, dass die gleiche Anzahl an Bind-Variablen vorhanden ist wie Felder im SELECT-Klausel.
  • Überprüfen Sie noch einmal, ob die Datentypen der Bindungsvariablen mit den entsprechenden Feldern übereinstimmen.
  • Wenn der Fehler weiterhin auftritt, überprüfen Sie die vorbereitete Anweisung mit $stmt->error um mögliche Syntax- oder Verbindungsprobleme zu identifizieren.

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage