Heim >Datenbank >MySQL-Tutorial >Warum löst „mysqli_stmt::bind_result()' in PHP den Fehler „Anzahl der Bind-Variablen stimmen nicht überein' aus?

Warum löst „mysqli_stmt::bind_result()' in PHP den Fehler „Anzahl der Bind-Variablen stimmen nicht überein' aus?

Susan Sarandon
Susan SarandonOriginal
2024-12-11 03:56:21246Durchsuche

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

mysqli_stmt::bind_result(): Number of Bind Variables Mismatch

Beim Versuch, ein PHP-Anmeldeformular mithilfe einer vorbereiteten Anweisung zu implementieren, Benutzer Es tritt häufig der Fehler „mysqli_stmt::bind_result()“ auf: Die Anzahl der Bindevariablen stimmt nicht mit der Anzahl der Felder in überein vorbereitete Erklärung.“ Dieser Fehler weist auf eine Diskrepanz zwischen der Anzahl der zum Speichern von Abfrageergebnissen verwendeten Bindevariablen und der tatsächlichen Anzahl der von der zugrunde liegenden SQL-Anweisung zurückgegebenen Felder hin.

Diagnosecode

$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
$username = $_POST['name'];
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($username, $password); // Incorrect field binding
$stmt->fetch();

Korrektur

Der obige Code enthält einen Fehler in seinen Feldbindungen. Die bind_result()-Methode sollte die tatsächlichen Felder widerspiegeln, die von der SELECT-Anweisung zurückgegeben werden. In diesem Szenario gibt die Abfrage zwei Felder zurück: Benutzername und Passwort. Daher lautet der korrekte Code:

$stmt->bind_result($username, $password); // Corrected field binding

Weitere Tipps

  • Stellen Sie sicher, dass die SQL-Anweisung korrekt ist. Es sollte die richtige Syntax und die richtige Anzahl von Fragezeichen (?) verwenden, um Bindungsvariablen darzustellen.
  • Die Datentypen von Bindungsvariablen und Ergebnisfeldern müssen übereinstimmen. In diesem Fall sollten sowohl $username als auch $password Zeichenfolgen sein.
  • Verwenden Sie immer vorbereitete Anweisungen, um SQL-Injection-Schwachstellen zu verhindern.

Das obige ist der detaillierte Inhalt vonWarum löst „mysqli_stmt::bind_result()' in PHP den Fehler „Anzahl der Bind-Variablen stimmen nicht überein' 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