Untuk menyediakan penyataan SQL dinamik dengan nombor parameter yang berubah-ubah, kaedah bind_param dalam PHP sering menimbulkan cabaran. Artikel ini akan membimbing anda melalui proses menjana pernyataan bind_param secara dinamik dalam PHP, meneroka kedua-dua penyelesaian sedia ada dan potensi peningkatan.
Coretan kod yang disediakan bergantung pada kaedah bind_param yang memerlukan penentu jenis diikuti oleh pembolehubah tunggal sebagai parameter. Untuk mengatasi kekurangan sokongan untuk berbilang parameter, penyelesaian tersuai telah dicuba menggunakan call_user_func_array. Walau bagaimanapun, ia menghadapi masalah dengan keserasian versi PHP.
PHP 5.6 memperkenalkan operator pembongkaran (...), yang boleh dimanfaatkan untuk memudahkan pengikatan dinamik. Pertimbangkan kod yang dipertingkatkan berikut:
public function get_custom_result($sql, $types = null, $params = null) { $stmt = $this->mysqli->prepare($sql); $stmt->bind_param($types, ...$params); if (!$stmt->execute()) return false; return $stmt->get_result(); }
Dengan menggunakan operator pembongkaran, kod tersebut secara dinamik membongkar tatasusunan $params ke dalam parameter individu, dengan berkesan menggantikan keperluan untuk berbilang panggilan bind_param.
Kaedah yang dipertingkatkan boleh digunakan sebagai berikut:
$res = $output->get_custom_result($sql, 'ss', array('1', 'Tk')); while ($row = $res->fetch_assoc()) { echo $row['fieldName'] . '<br>'; }
Contoh ini menyediakan pernyataan SQL dengan dua parameter, '1' dan 'Tk', dan melaksanakan pertanyaan. Hasilnya kemudian diambil dan dipaparkan.
Walaupun pendekatan pengikatan yang dipertingkatkan berfungsi dengan baik, terdapat strategi alternatif untuk dipertimbangkan:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Penyata `bind_param` secara Dinamik untuk MySQLi dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!