Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membina Keadaan LIKE Dinamik dengan Selamat dalam Penyata Disediakan MySQLi?

Bagaimana untuk Membina Keadaan LIKE Dinamik dengan Selamat dalam Penyata Disediakan MySQLi?

Barbara Streisand
Barbara Streisandasal
2024-12-17 18:24:11847semak imbas

How to Securely Build Dynamic LIKE Conditions in MySQLi Prepared Statements?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn