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:
-
Buat tatasusunan nama parameter: Tentukan tatasusunan untuk menyimpan nama semua medan borang yang ingin anda kemas kini.
-
Memulakan tatasusunan kosong untuk parameter: Cipta tatasusunan baharu untuk menyimpan nilai medan bukan kosong.
-
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.
-
Bina rentetan pertanyaan: Bina rentetan pertanyaan SQL, tambah ruang letak (?) secara dinamik untuk parameter bukan kosong.
-
Sediakan pernyataan: Sediakan rentetan pertanyaan yang diubah suai menggunakan $mysqli->prepare().
-
Buat tatasusunan jenis data: Tentukan jenis data parameter dan cipta tatasusunan aksara yang mewakili jenis (cth., "ss..." untuk dua rentetan).
-
Gabungkan tatasusunan jenis dan nilai: Gabungkan taip tatasusunan dengan tatasusunan nilai parameter bukan kosong untuk mencipta tatasusunan tunggal.
-
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!