Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat 'Pembolehubah Ikatan Tidak Padan'?

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-11 13:09:11635semak imbas

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

mysqli_stmt::bind_result(): Pembolehubah Bind Tidak Padan lwn Medan Penyata Disediakan

Soalan:

Apabila cuba melaksanakan pernyataan yang disediakan dengan mysqli_stmt, saya menghadapi ralat: "mysqli_stmt::bind_result(): Bilangan pembolehubah bind tidak sepadan dengan bilangan medan dalam pernyataan yang disediakan." Mengapa saya menerima ralat ini?

Contoh Kod:

$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();

Jawapan:

Ralat yang anda hadapi berlaku apabila bilangan pembolehubah yang dinyatakan dalam bind_result() tidak sepadan dengan bilangan lajur yang dikembalikan oleh pertanyaan pernyataan yang disediakan. Dalam contoh anda, anda cuba untuk mengikat dua pembolehubah kepada pertanyaan yang mengembalikan hanya satu lajur.

Untuk menyelesaikan isu ini, pertanyaan harus ditulis dalam format yang betul untuk operasi. Sintaks yang betul untuk memilih berbilang medan adalah untuk memisahkannya dengan koma, bukan DAN:

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

Setelah pertanyaan diperbetulkan, kaedah bind_result() boleh digunakan untuk mengikat pembolehubah dengan betul kepada hasil:

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

Atas ialah kandungan terperinci Mengapakah `mysqli_stmt::bind_result()` Melemparkan Ralat 'Pembolehubah Ikatan Tidak Padan'?. 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