Rumah >pangkalan data >tutorial mysql >Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat 'Bilangan pembolehubah ikatan tidak sepadan dengan bilangan medan'?

Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat 'Bilangan pembolehubah ikatan tidak sepadan dengan bilangan medan'?

DDD
DDDasal
2024-12-17 20:11:10343semak imbas

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

mysqli_stmt::bind_result() Ralat: Pembolehubah Bind Memadankan dengan Medan Pernyataan Disediakan

Apabila cuba menggunakan pernyataan yang disediakan untuk mekanisme log masuk dalam PHP, anda mungkin menghadapi ralat: "mysqli_stmt::bind_result(): Bilangan pembolehubah ikatan tidak sepadan dengan bilangan medan dalam pernyataan yang disediakan." Ini menunjukkan percanggahan antara bilangan pembolehubah yang anda ikat dalam keputusan anda dan bilangan medan yang dijangkakan oleh pernyataan yang disediakan.

Kod dan Analisis Salah:

kod yang disediakan menunjukkan isu:

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

Ralat timbul kerana kata kunci "DAN" telah digunakan secara salah dalam SELECT klausa. Daripada memisahkan medan dengan "DAN," anda harus menggunakan koma.

Kod dan Penjelasan Betul:

Untuk menyelesaikan ralat ini, ubah suai klausa SELECT seperti berikut :

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

Dengan pengubahsuaian ini, kenyataan yang disediakan kini menjangkakan dua medan akan dikembalikan: nama pengguna dan kata laluan. Anda kemudiannya boleh mengikat dua pembolehubah dengan selamat menggunakan mysqli_stmt::bind_result().

$stmt->bind_result($username, $password);

Dengan memastikan bilangan pembolehubah ikatan sepadan dengan bilangan medan dalam pernyataan yang disediakan, anda boleh menghalang "Nombor pembolehubah bind tidak sepadan dengan bilangan medan dalam ralat pernyataan yang disediakan.

Atas ialah kandungan terperinci Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat 'Bilangan pembolehubah ikatan tidak sepadan dengan bilangan medan'?. 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