Dalam PHP, kita selalunya perlu menggunakan syarat pertanyaan untuk mendapatkan data yang memenuhi syarat tertentu. Keadaan pertanyaan biasa boleh menjadi rentetan, contohnya:
$query = "SELECT * FROM users WHERE username = 'john'";
Walau bagaimanapun, dalam beberapa kes, kita perlu menggunakan syarat pertanyaan yang lebih kompleks. Pada masa ini, kita boleh menggunakan tatasusunan untuk membina keadaan pertanyaan.
Kelebihan menggunakan syarat pertanyaan tatasusunan ialah ia boleh menjadi lebih fleksibel dan boleh dibaca. Dengan mentakrifkan tatasusunan bersekutu, kita boleh menambah dan mengalih keluar keadaan mengikut keperluan.
Mari lihat beberapa contoh:
Berikut ialah contoh tatasusunan keadaan pertanyaan mudah Kami menanyakan sekumpulan pengguna bernama "john", Pengguna maklumat untuk "jane" dan "alice":
$users = array("john", "jane", "alice"); $query = "SELECT * FROM users WHERE username IN ('" . implode("','", $users) . "')";
Di sini, kami mencipta tatasusunan $users
yang mengandungi senarai nama pengguna. Kami kemudian menggunakan fungsi implode()
untuk menukar tatasusunan kepada rentetan dan menggunakan rentetan dalam pertanyaan SQL.
Ini akan menjana pertanyaan berikut:
SELECT * FROM users WHERE username IN ('john','jane','alice')
Ini akan membuat pertanyaan untuk semua maklumat pengguna dengan nama pengguna "john", "jane" dan "alice".
Dalam penggunaan sebenar, kita mungkin memerlukan tatasusunan keadaan pertanyaan yang lebih kompleks. Sebagai contoh, kami ingin menanyakan maklumat semua pengguna yang masa pendaftarannya berada dalam julat yang ditentukan dan statusnya diaktifkan:
$conditions = array( "start_date" => "2021-01-01", "end_date" => "2021-12-31", "status" => "active" ); $query = "SELECT * FROM users WHERE "; foreach ($conditions as $key => $value) { $query .= "$key = '$value' AND "; } $query = rtrim($query, " AND ");
Di sini, kami mencipta tatasusunan bersekutu $conditions
untuk menyimpan syarat pertanyaan . Kami menentukan tiga syarat: julat masa pendaftaran dan status pengguna.
Kemudian, kami menggunakan foreach
untuk menggelungkan tatasusunan keadaan dan menggabungkan keadaan ke dalam pembolehubah $query
mengikut sintaks SQL.
Akhir sekali, kami menggunakan fungsi rtrim()
untuk mengalih keluar "DAN" pada penghujungnya untuk mengelakkan ralat sintaks.
Ini akan menjana pertanyaan berikut:
SELECT * FROM users WHERE start_date = '2021-01-01' AND end_date = '2021-12-31' AND status = 'active'
Dalam situasi sebenar, syarat pertanyaan mungkin dijana secara dinamik berdasarkan situasi yang berbeza. Dalam kes ini, kita boleh mencapai ini dengan mencipta pelbagai keadaan pertanyaan secara dinamik.
Sebagai contoh, kami ingin menanyakan semua maklumat pengguna yang nama penggunanya bermula dengan rentetan tertentu:
function get_user_by_prefix($prefix) { $conditions = array(); $conditions["username LIKE"] = $prefix . "%"; $query = "SELECT * FROM users WHERE "; foreach ($conditions as $key => $value) { $query .= "$key = '$value' AND "; } $query = rtrim($query, " AND "); $result = mysqli_query($conn, $query); // Do something with the result }
Di sini, kami mentakrifkan fungsi get_user_by_prefix()
yang menerima awalan nama pengguna sebagai parameter . Kemudian, kami mencipta tatasusunan syarat pertanyaan $conditions
secara dinamik untuk menanyakan maklumat pengguna sahaja yang nama penggunanya bermula dengan awalan yang ditentukan.
Gunakan sintaks $conditions["username LIKE"] = $prefix . "%";
untuk menambah elemen pada tatasusunan.
Akhir sekali, kami menggunakan fungsi mysqli_query()
untuk melaksanakan pertanyaan dan hasilnya kemudiannya boleh diproses.
Dalam PHP, menggunakan syarat pertanyaan tatasusunan ialah kaedah penting untuk mencapai pertanyaan yang fleksibel dan boleh dibaca. Dengan menggunakan tatasusunan, kami boleh membina pertanyaan secara dinamik untuk memenuhi syarat yang berbeza dan menjadikan pernyataan pertanyaan lebih mudah dibaca. Dalam aplikasi praktikal, kita harus menggunakan kaedah ini secara munasabah mengikut keperluan yang berbeza.
Atas ialah kandungan terperinci Cara menggunakan tatasusunan untuk membina keadaan pertanyaan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!