Dalam pembangunan PHP, kita sering menghadapi keperluan untuk menanyakan beberapa keping data dalam pangkalan data berdasarkan satu atau lebih ID Dalam kes ini, kita perlu menggunakan pertanyaan tatasusunan ID. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menanya dengan pantas berbilang keping data dalam pangkalan data berdasarkan tatasusunan id.
1. Kaedah tradisional
Pernyataan pertanyaan SQL tradisional perlu menggunakan kata kunci IN Kod khusus adalah seperti berikut:
$sql = "SELECT * FROM `table` WHERE `id` IN (1, 2, 3, 4, 5)";
Dalam pernyataan pertanyaan mudah ini, kami Pemegang tempat. boleh diluluskan dalam tatasusunan id yang perlu kita tanya. Dalam proses pembangunan sebenar, kita perlu menggunakan PHP untuk menggabungkan pernyataan pertanyaan dan tatasusunan id bersama-sama, dan kemudian melaksanakan operasi pertanyaan. Kod pelaksanaan khusus adalah seperti berikut:
$ids = [1, 2, 3, 4, 5]; $placeholder = rtrim(str_repeat('?,', count($ids)), ','); $sql = "SELECT * FROM `table` WHERE `id` IN ($placeholder)"; $stmt = $pdo->prepare($sql); $stmt->execute($ids); $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
Dalam kod di atas, $ids ialah tatasusunan id yang perlu kita buat pertanyaan. Mula-mula, kita menggunakan fungsi rtrim untuk memadam koma pada penghujung rentetan, kemudian gunakan fungsi str_repeat untuk mengulangi "?", dan akhirnya menggunakan fungsi kiraan untuk mendapatkan panjang tatasusunan untuk menentukan berapa kali kita perlu mengulanginya. , dengan itu menghasilkan akaun yang mengandungi berbilang tanda soal. Seterusnya, kami mengisi rentetan pemegang tempat ke dalam pernyataan pertanyaan.
Akhirnya buat objek PDOStatement baharu dan laksanakan pertanyaan Selepas pelaksanaan berjaya, kami boleh mendapatkan data yang kami perlukan daripada hasil pertanyaan.
2. Pelaksanaan yang lebih elegan
Jika terdapat berbilang operasi pertanyaan dalam kod kami, kami perlu menyambung penyataan dan ruang letak SQL secara manual setiap kali Menggunakan kaedah tradisional di atas akan berubah menyusahkan dan sukar untuk dijaga. Oleh itu, kita memerlukan pelaksanaan yang lebih elegan Program yang baik bukan sahaja melaksanakan fungsi, tetapi juga mengambil kira keanggunan dan kemudahan penyelenggaraan program.
Di bawah ini kami akan memperkenalkan pelaksanaan yang lebih elegan - menggunakan perpustakaan QueryBuilder. QueryBuilder ialah perpustakaan kelas PHP yang ringan dan sangat boleh dikembangkan yang membolehkan kami menggunakan pendekatan berorientasikan objek untuk membina pernyataan pertanyaan SQL, menjadikan kod kami lebih mudah dibaca dan diselenggara.
Mula-mula, kita perlu memasang perpustakaan QueryBuilder, yang boleh dilakukan menggunakan arahan komposer:
composer require doctrine/query-builder
Seterusnya, buat contoh kelas QueryBuilder dan gunakan kaedah in untuk membina pertanyaan syarat:
use Doctrine\DBAL\Query\QueryBuilder; $ids = [1, 2, 3, 4, 5]; $queryBuilder = new QueryBuilder($pdo); $queryBuilder->select('*') ->from('table') ->where($queryBuilder->expr()->in('id', $ids)); $stmt = $queryBuilder->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
Dalam kod di atas, kita hanya perlu menggunakan kaedah in untuk merealisasikan fungsi pertanyaan berdasarkan tatasusunan id Kaedah in menggunakan sintaks ungkapan dalam kelas QueryBuilder, yang lebih mudah untuk kita membina keadaan yang kompleks.
3. Ringkasan
Dengan menggunakan perpustakaan kelas QueryBuilder, kami boleh melaksanakan fungsi pertanyaan berdasarkan tatasusunan id dengan lebih elegan dan hanya memerlukan kod minimum untuk melaksanakan operasi pertanyaan pada berbilang data . Berbanding dengan kaedah pertanyaan SQL tradisional, perpustakaan QueryBuilder boleh menjadikan kod lebih mudah dibaca dan diselenggara, membolehkan pengaturcara menumpukan lebih pada pelaksanaan logik perniagaan dan bukannya membuang masa pada pembinaan pernyataan pertanyaan SQL yang membosankan.
Atas ialah kandungan terperinci Cara menggunakan PHP untuk menanya dengan pantas beberapa keping data dalam pangkalan data berdasarkan tatasusunan id. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!