Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Saya Mendapat Ralat \"Bilangan Pembolehubah Ikatan Tidak Padan\" dalam Penyata Disediakan MySQLi?

Mengapa Saya Mendapat Ralat \"Bilangan Pembolehubah Ikatan Tidak Padan\" dalam Penyata Disediakan MySQLi?

Patricia Arquette
Patricia Arquetteasal
2024-10-27 19:31:30645semak imbas

Why Am I Getting

Bilangan Pembolehubah Ikatan Tidak Padan dalam Sisipan Penyata Disediakan

Apabila melaksanakan pernyataan INSERT menggunakan pernyataan yang disediakan MySQLi, pengguna mungkin menghadapi ralat: " Bilangan pembolehubah ikatan tidak sepadan dengan bilangan medan dalam pernyataan yang disediakan."

Isu ini timbul apabila bilangan pembolehubah ikatan yang disediakan dalam kaedah bind_param() tidak sejajar dengan bilangan ruang letak dalam pertanyaan INSERT . Contohnya, pertimbangkan coretan kod di bawah:

if($stmt = $conn->prepare("INSERT INTO login(user, pass) VALUES(?, ?)")) {

  /* Bind parameters s - string, b - blob, i - int, etc */
  $stmt->bind_param("ss", $user, $pw);

  /* Execute it */
  $stmt->execute();

  /* Bind results */
  $stmt->bind_result($user, $pw);

  /* Close statement */
  $stmt->close();
  $userId = $conn->insert_id;
}

Dalam kod ini, pernyataan INSERT mempunyai dua ruang letak (?): satu untuk pengguna dan satu untuk pas. Walau bagaimanapun, kaedah bind_param() mengikat dua pembolehubah ($pengguna, $pw) kepada ruang letak. Ini mengakibatkan ralat tidak padan.

Penyelesaian adalah untuk mengalih keluar panggilan kaedah bind_result() memandangkan pernyataan INSERT tidak mengembalikan sebarang hasil. Kod yang dikemas kini di bawah memasukkan data ke dalam jadual dengan betul:

if($stmt = $conn->prepare("INSERT INTO login(user, pass) VALUES(?, ?)")) {

  /* Bind parameters s - string, b - blob, i - int, etc */
  $stmt->bind_param("ss", $user, $pw);

  /* Execute it */
  $stmt->execute();

  /* Close statement */
  $stmt->close();
  $userId = $conn->insert_id;
}

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \"Bilangan Pembolehubah Ikatan Tidak Padan\" dalam Penyata Disediakan MySQLi?. 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