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
Lepaskan: 2024-12-03 08:23:10
asal
293 orang telah melayarinya

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 %??%";
    }
}
Salin selepas log masuk

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 );
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan