Pengguna boleh memasukkan bilangan istilah carian yang berubah-ubah, dan pertanyaan yang sepadan perlu dibina secara dinamik berdasarkan istilah tersebut. Objektifnya adalah untuk mencipta pernyataan yang disediakan yang menampung input dinamik ini.
Membina Ungkapan Pertanyaan:
Balut setiap istilah carian dalam Keadaan LIKE dengan ruang letak untuk nilai mengikat (%?).
Contoh:
$construct .= "name LIKE %?%";
Parameter Pengikat:
Pek jenis data dan nilai input ke dalam satu tatasusunan menggunakan pengendali percikan (...).
Contoh:
$parameters = ['sss', '%Bill%', '%N_d%', '%Dave%'];
Menyedia dan Melaksanakan Kenyataan:
Sediakan pernyataan dengan klausa WHERE dinamik dan mengikat parameter.
$stmt = $mysqli->prepare('SELECT * FROM info WHERE ' . implode(' OR ', $conditions)); $stmt->bind_param(...$parameters); $stmt->execute();
Mendapatkan Keputusan:
Laksanakan pertanyaan dan ambil keputusan mengikut keperluan.
$result = $stmt->get_result(); foreach ($result as $row) { echo '<div>' . $row['name'] . '</div>\n'; }
Contoh Dibetulkan Kod:
<?php $string = "my name"; $search_exploded = explode(" ", $string); $num = count($search_exploded); $conditions = []; $parameters = ['']; foreach (array_unique($search_exploded) as $value) { $conditions[] = "name LIKE ?"; $parameters[0] .= 's'; $parameters[] = "%{$value}%"; } $query = "SELECT * FROM info"; if ($conditions) { $stmt = $mysqli->prepare($query . ' WHERE ' . implode(' OR ', $conditions)); $stmt->bind_param(...$parameters); $stmt->execute(); $result = $stmt->get_result(); } else { $result = $conn->query($query); } foreach ($result as $row) { echo '<div>' . $row['name'] . '</div>\n'; } ?>
Atas ialah kandungan terperinci Bagaimana untuk Membina Pertanyaan PILIH Keadaan LIKE Dinamik dalam MySQLi Menggunakan Penyata Disediakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!