Bina SELECT Queries dengan Dynamic LIKE Conditions as mysqli Prepared Statements
Apabila bekerja dengan input pengguna, pernyataan yang disediakan menyediakan cara yang selamat untuk melaksanakan SQL pertanyaan. Untuk mengendalikan bilangan dinamik keadaan LIKE berdasarkan input pengguna, pendekatan tersuai diperlukan.
Masalahnya
Kod yang diberikan bertujuan untuk mencipta pernyataan yang disediakan dengan pembolehubah bilangan syarat LIKE. Walau bagaimanapun, terdapat ralat dengan % aksara tidak diletakkan di sekeliling parameter tetapi di sekeliling ruang letak.
Penyelesaian
Untuk membetulkan isu itu, % aksara harus dibalut parameter dalam pembolehubah binaan. Berikut ialah kod yang diubah suai:
foreach ($search_exploded as $search_each) { $x++; if ($x == 1) { $construct .= "name LIKE ?%"; // % now wraps the parameter } else { $construct .= " or name LIKE ?%"; // % now wraps the parameter } }
Ini akan menjana rentetan binaan yang menyerupai yang berikut:
name LIKE %?% or name LIKE %?% or ...
Peningkatan Tambahan
Yang disediakan Coretan PHP memanfaatkan mysqli berorientasikan objek dan bukannya sintaks prosedur. Selain itu, penyelesaian itu memastikan ungkapan klausa WHERE dinamik dan jenis data ditampung, menghilangkan keperluan untuk pernyataan yang disediakan jika tiada syarat wujud.
Kesimpulan
Dengan mengikuti langkah ini , anda boleh membina keadaan LIKE dinamik dengan berkesan dalam pernyataan yang disediakan mysqli, dengan ketara meningkatkan pengendalian pertanyaan SQL anda keupayaan.
Atas ialah kandungan terperinci Bagaimana untuk Membina Keadaan LIKE Dinamik dengan Selamat dalam Penyata Disediakan MySQLi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!