Dalam PHP, pertanyaan dalam boleh digunakan untuk mencari nilai tertentu dalam set nilai. Biasanya, dalam pertanyaan dalam, kita perlu menyediakan senarai nilai yang dipisahkan koma. Sebagai contoh, kami mungkin perlu mencari semua pengguna yang berumur 20, 21 atau 22 dalam senarai berikut:
SELECT * FROM users WHERE age IN (20,21,22);
Dalam contoh ini, kami menyediakan pertanyaan dalam senarai tiga nilai integer .
Walau bagaimanapun, untuk pembangun pengaturcaraan dalam PHP dan MySQL, terdapat banyak variasi pertanyaan dalam. Salah satunya ialah menggunakan tatasusunan PHP seperti dalam parameter senarai.
Penggunaan ini membolehkan menghantar tatasusunan PHP terus kepada operator dalam dalam pertanyaan MySQL dan mendapatkan semula data yang diperlukan daripadanya.
Berikut ialah contoh kod:
$ages = [20,21,22]; $sql = "SELECT * FROM users WHERE age IN (".implode(',',$ages).")"; $result = mysqli_query($conn, $sql);
Dalam contoh ini, kami menggunakan fungsi implode()
dalam PHP untuk menukar tatasusunan umur kepada rentetan dipisahkan koma dan kemudian membenamkannya ke dalam IN pengendali pertanyaan SQL.
Sudah tentu, kami juga boleh menggunakan kaedah lain untuk menukar tatasusunan PHP kepada jenis data yang sesuai untuk pertanyaan IN, seperti:
$ages = [20,21,22]; $ageList = "('".implode("','",$ages)."')"; $sql = "SELECT * FROM users WHERE age IN $ageList"; $result = mysqli_query($conn, $sql);
Dalam contoh ini, kami menggunakan interpolasi rentetan ( interpolasi rentetan ) membenamkan ageList ke dalam pengendali IN pertanyaan SQL dan menggunakan petikan tunggal untuk memastikan setiap umur dianggap sebagai nilai rentetan.
Perlu diambil perhatian bahawa dalam beberapa kes, menggunakan tatasusunan PHP sebagai parameter pertanyaan IN mungkin bukan penyelesaian yang optimum. Contohnya, jika pertanyaan anda melibatkan sejumlah besar nilai, menggunakan pertanyaan IN mungkin bukan pilihan terbaik kerana pertanyaan mungkin lebih perlahan.
Selain itu, adalah penting untuk ambil perhatian bahawa menggunakan interpolasi rentetan atau fungsi implode()
untuk menukar tatasusunan kepada parameter pertanyaan mungkin memperkenalkan risiko serangan suntikan SQL. Oleh itu, apabila menggunakan kaedah ini, sentiasa pastikan bahawa data telah ditapis dan dibersihkan dengan secukupnya.
Secara amnya, apabila menggunakan pertanyaan IN dalam PHP, anda boleh memilih untuk menggunakan tatasusunan PHP sebagai parameter pertanyaan IN, tetapi anda perlu memberi perhatian kepada prestasi dan keselamatannya.
Atas ialah kandungan terperinci Adakah pertanyaan php dalam tatasusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!