Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengikat Pembolehubah kepada Penyata Disediakan MySQL dengan Bilangan Dinamik Pembolehubah Input?

Bagaimana untuk Mengikat Pembolehubah kepada Penyata Disediakan MySQL dengan Bilangan Dinamik Pembolehubah Input?

Barbara Streisand
Barbara Streisandasal
2024-10-26 10:22:02395semak imbas

How to Bind Variables to MySQL Prepared Statements with a Dynamic Number of Input Variables?

Menggunakan bind_param() dengan Bilangan Pembolehubah Input Pembolehubah

Dalam pernyataan yang disediakan MySQL, bind_param() digunakan untuk mengikat pembolehubah kepada ruang letak dalam pertanyaan SQL. Walau bagaimanapun, apabila bekerja dengan bilangan pembolehubah input yang dinamik, seperti data borang, ia boleh menjadi mencabar untuk mengendalikan nilai kosong atau tiada.

Masalah:

Biasanya, bind_param() memerlukan bilangan pembolehubah input tertentu, dan nilai kosong akan menyebabkan ralat. Timbul persoalan: bagaimana untuk menguruskan situasi ini dengan berkesan apabila beberapa pembolehubah input mungkin kosong?

Penyelesaian:

Satu pendekatan inovatif ialah menggunakan fungsi call_user_func_array() untuk panggil bind_param() dengan bilangan argumen yang berubah-ubah. Berikut ialah penyelesaian langkah demi langkah:

  1. Buat tatasusunan nama parameter: Tentukan tatasusunan untuk menyimpan nama semua medan borang yang ingin anda kemas kini.
  2. Memulakan tatasusunan kosong untuk parameter: Cipta tatasusunan baharu untuk menyimpan nilai medan bukan kosong.
  3. Lelar atas nama parameter: Gelung melalui tatasusunan nama parameter. Untuk setiap nama, semak sama ada nilai yang sepadan dalam $_POST ditetapkan dan bukan kosong. Jika ya, tambahkan nama dan nilai parameter pada tatasusunan parameter.
  4. Bina rentetan pertanyaan: Bina rentetan pertanyaan SQL, tambah ruang letak (?) secara dinamik untuk parameter bukan kosong.
  5. Sediakan pernyataan: Sediakan rentetan pertanyaan yang diubah suai menggunakan $mysqli->prepare().
  6. Buat tatasusunan jenis data: Tentukan jenis data parameter dan cipta tatasusunan aksara yang mewakili jenis (cth., "ss..." untuk dua rentetan).
  7. Gabungkan tatasusunan jenis dan nilai: Gabungkan taip tatasusunan dengan tatasusunan nilai parameter bukan kosong untuk mencipta tatasusunan tunggal.
  8. Panggil bind_param() menggunakan call_user_func_array: Lulus tatasusunan yang digabungkan sebagai argumen kepada call_user_func_array() untuk memanggil bind_param dengan berkesan () dengan bilangan parameter yang berubah-ubah.

Atas ialah kandungan terperinci Bagaimana untuk Mengikat Pembolehubah kepada Penyata Disediakan MySQL dengan Bilangan Dinamik Pembolehubah Input?. 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