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
Lepaskan: 2024-12-17 20:11:10
asal
349 orang telah melayarinya

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);
Salin selepas log masuk

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 = ?");
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan