Menyesuaikan bind_param() untuk Pengikatan Pembolehubah Input Dinamik
Masalah:
Mengikat bilangan pembolehubah input menggunakan Kaedah bind_param() boleh mencabar, terutamanya apabila sesetengah pembolehubah mungkin kosong dan tidak seharusnya dikemas kini dalam pangkalan data.
Jawapan:
Fungsi call_user_func_array() boleh digunakan untuk memanggil bind_param() dengan bilangan argumen yang berubah-ubah, memberikan penyelesaian kepada isu ini.
Pelaksanaan:
-
Tentukan Nama Pembolehubah Input:
- Buat tatasusunan nama pembolehubah input (cth., $paramNames = array('myvar1', 'myvar2', /* ... */)) .
-
Tapis Pembolehubah Bukan Kosong:
- Lelaran melalui nama pembolehubah input dan semak sama ada setiap pembolehubah ditetapkan dan tidak kosong dalam tatasusunan $_POST (cth., $params[$name] = $_POST[$name];).
-
Bina Rentetan Pertanyaan:
- Bina rentetan pertanyaan dengan menambahkan pembolehubah yang tidak kosong pada pembolehubah $query (cth., foreach ($params as $name => $val) { $query .= $nama.'=?,'; }).
-
Laraskan Sintaks Pertanyaan:
- Alih keluar koma mengekor daripada $query dan tambah bahagian yang tinggal pertanyaan (cth., $query = substr($query, 0, -1); $query .= 'WHERE id = ?';).
-
Sediakan Pernyataan dan Parameter Bind:
- Sediakan pernyataan menggunakan $query yang diubah suai dan panggil bind_param() dengan tatasusunan yang mengandungi bilangan aksara s yang betul (cth., $params = array_merge(array (str_repeat('s', count($params))), array_values($params))).
-
Panggil bind_param() Menggunakan call_user_func_array():
- Ajak bind_param() menggunakan call_user_func_array(array(&$stmt, 'bind_param'), $params) untuk menghantar bilangan argumen yang berubah-ubah.
Teknik ini membolehkan pengikatan pembolehubah input dinamik, mengambil kira pembolehubah kosong dan memastikan hanya data yang sah dikemas kini dalam pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Mengikat Pembolehubah Input secara Dinamik dalam PHP dengan bind_param() apabila Beberapa Pembolehubah Mungkin Kosong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!