Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membina Pertanyaan Suka Dinamik dengan Cekap dengan Penyata Disediakan mysqli?

Bagaimana untuk Membina Pertanyaan Suka Dinamik dengan Cekap dengan Penyata Disediakan mysqli?

Linda Hamilton
Linda Hamiltonasal
2024-12-03 08:23:10299semak imbas

How to Efficiently Build Dynamic LIKE Queries with mysqli Prepared Statements?

Pertanyaan LIKE Dinamik Menggunakan Penyata Disediakan mysqli

Soalan ini menangani isu mewujudkan kenyataan yang disediakan dengan bilangan syarat LIKE yang berubah-ubah berdasarkan input pengguna. Kod PHP yang disediakan cuba membina pernyataan, tetapi terdapat ralat yang berkaitan dengan pemformatan klausa LIKE.

Masalah utama terletak pada tempat tanda peratus (%) diletakkan di sekeliling parameter (?) dalam klausa LIKE. Daripada membungkus parameter, tanda peratus harus pergi di sekitar ruang letak, seperti yang ditunjukkan di bawah:

foreach ( $search_exploded as $search_each ) {
    $x ++;
    if ( $x == 1 ) {
        $construct .= "name LIKE %??%";
    } else {
        $construct .= " or name LIKE %??%";
    }
}

Pembetulan ini memastikan bahawa nilai parameter (cth., "nama saya") diikat dengan betul pada klausa LIKE .

Selain itu, kod menggunakan rentetan bercantum ($bina) untuk membina klausa WHERE. Walau bagaimanapun, pendekatan yang lebih cekap dan selamat ialah menggunakan tatasusunan pemegang tempat bind_param() untuk semua parameter, seperti yang ditunjukkan di bawah:

$where_params = [];
foreach ( $search_exploded as $search_each ) {
    $where_params[] = "%{$search_each}%";
}

$query = "SELECT * FROM info WHERE name LIKE ?";
$stmt = mysqli_prepare( $conn, $query );
mysqli_stmt_bind_param( $stmt, "s", ...$where_params );

Kaedah ini mengendalikan sebarang bilangan keadaan LIKE dengan anggun dan menghapuskan risiko suntikan SQL kelemahan.

Dengan pengubahsuaian ini, pertanyaan LIKE dinamik boleh mencari rekod dengan betul berdasarkan berbilang pengguna yang ditentukan kriteria.

Atas ialah kandungan terperinci Bagaimana untuk Membina Pertanyaan Suka Dinamik dengan Cekap dengan 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