Heim > Backend-Entwicklung > PHP-Tutorial > Warum wirft „mysqli_stmt::bind_result()' einen „Binding Mismatch'-Fehler in PHP-Anmeldeformularen aus?

Warum wirft „mysqli_stmt::bind_result()' einen „Binding Mismatch'-Fehler in PHP-Anmeldeformularen aus?

Barbara Streisand
Freigeben: 2024-12-24 03:49:27
Original
443 Leute haben es durchsucht

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

Mysqli_stmt::bind_result()-Fehler: Bindungskonflikt

Beim Versuch, ein PHP-Anmeldeformular mithilfe einer vorbereiteten Anweisung zu implementieren, kann es zu Problemen kommen der folgende Fehler:

mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement
Nach dem Login kopieren

Dieser Fehler weist auf eine Diskrepanz zwischen der Anzahl der in angegebenen Variablen hin bind_result() und die Anzahl der Felder, die von der vorbereiteten Anweisung zurückgegeben werden. Um dieses Problem zu beheben, untersuchen Sie den folgenden Codeausschnitt:

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

Grundursache:

Die falsche Syntax in der SELECT-Anweisung ist die Grundursache des Fehlers. Die korrekte Syntax sollte sein:

SELECT username, password FROM users WHERE username = ?
Nach dem Login kopieren

Lösung:

Das Problem kann gelöst werden, indem die Felder in der SELECT-Anweisung durch ein Komma anstelle von „AND“ getrennt werden. " Der richtige Code wird unten bereitgestellt:

$mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
Nach dem Login kopieren

Durch Sicherstellen der korrekten Syntax in der SELECT-Anweisung und Beobachten, dass die Anzahl der Bindevariablen mit der Anzahl der Felder in der vorbereiteten Anweisung übereinstimmt, wird der mysqli_stmt::bind_result()-Fehler angezeigt kann verhindert werden.

Das obige ist der detaillierte Inhalt vonWarum wirft „mysqli_stmt::bind_result()' einen „Binding Mismatch'-Fehler in PHP-Anmeldeformularen aus?. 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