Pengikatan Pembolehubah Dinamik dengan bind_param()
Apabila bekerja dengan nombor pembolehubah input untuk bind_param(), pengendalian nilai kosong boleh menjadi cabaran. Percubaan untuk menggunakan "..." dalam rentetan ruang letak mungkin tidak dapat dilaksanakan kerana nilai $_POST kosong.
Penyelesaian kepada masalah ini ialah menggunakan call_user_func_array() untuk menghantar nombor pembolehubah argumen kepada bind_param () kaedah:
<code class="php">$parameterNames = array('myvar1', 'myvar2', /* ... */); $parameters = array(); foreach ($parameterNames as $name) { if (isset($_POST[$name]) && $_POST[$name] != '') { $parameters[$name] = $_POST[$name]; } } if (count($parameters)) { $query = 'UPDATE mytable SET '; foreach ($parameters as $name => $value) { $query .= $name.'=?,'; } $query = substr($query, 0, -1); // Remove trailing comma $query .= 'WHERE id = ?'; $statement = $mysqli->prepare($query); $typeString = str_repeat('s', count($parameters)); $parameters = array_merge(array($typeString), array_values($parameters)); call_user_func_array(array($statement, 'bind_param'), $parameters); }</code>
Pendekatan ini membolehkan anda menjana pertanyaan SQL secara dinamik berdasarkan nilai $_POST yang tersedia, memastikan hanya nilai bukan kosong disertakan dalam pernyataan kemas kini.
Atas ialah kandungan terperinci Bagaimana untuk Mengikat Parameter Secara Dinamik dengan `bind_param()` Apabila Mengendalikan Nilai Kosong dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!