Rumah >pangkalan data >tutorial mysql >Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat Tidak Padan Pembolehubah Bind?

Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat Tidak Padan Pembolehubah Bind?

Patricia Arquette
Patricia Arquetteasal
2024-12-10 21:46:14606semak imbas

Why Does `mysqli_stmt::bind_result()` Throw a Bind Variable Mismatch Error?

Ikat Tidak Padan Pembolehubah dalam mysqli_stmt::bind_result() PHP

Apabila cuba log masuk menggunakan borang log masuk PHP dengan pernyataan yang disediakan, anda menghadapi ralat:

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

Diagnosis:

Ralat ini berlaku apabila bilangan pembolehubah mengikat yang dinyatakan dalam bind_param() tidak sepadan dengan bilangan medan yang dikembalikan oleh yang disediakan kenyataan.

Penyelesaian:

Dalam anda kod:

$stmt->prepare("SELECT username AND password FROM users WHERE username = ?");

Pernyataan yang disediakan mendapatkan semula dua medan, nama pengguna dan kata laluan, tetapi panggilan bind_param() dan bind_result() anda yang seterusnya menyatakan hanya satu pembolehubah bind, $username.

Untuk menyelesaikan ini, anda perlu menentukan berbilang pembolehubah dan medan ikatan dengan betul:

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

Atas ialah kandungan terperinci Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat Tidak Padan Pembolehubah Bind?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn