PHP dan PDO: Cara melaksanakan pernyataan pertanyaan SQL yang kompleks
Apabila berurusan dengan operasi pangkalan data, PHP menyediakan perpustakaan sambungan yang berkuasa PDO (Objek Data PHP) untuk memudahkan interaksi dengan pangkalan data. PDO menyokong pelbagai pangkalan data, seperti MySQL, SQLite, dsb., dan juga menyediakan pelbagai fungsi dan kaedah untuk memudahkan pembangun melaksanakan pelbagai operasi pangkalan data. Artikel ini akan memperkenalkan cara menggunakan PDO untuk melaksanakan pernyataan pertanyaan SQL yang kompleks dan melampirkan contoh kod yang sepadan.
Sebelum menggunakan PDO, anda perlu membuat sambungan ke pangkalan data terlebih dahulu. Contoh kod berikut menunjukkan cara menyambung ke pangkalan data MySQL:
$dsn = 'mysql:host=localhost;dbname=testdb'; $username = 'root'; $password = ''; try { $conn = new PDO($dsn, $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "连接成功"; } catch (PDOException $e) { echo "连接失败: " . $e->getMessage(); }
Dalam kod di atas, rentetan sambungan (DSN) pertama kali ditakrifkan, termasuk jenis pangkalan data (mysql), nama hos (localhost) dan nama pangkalan data (testdb) . Seterusnya adalah nama pengguna pangkalan data (root) dan kata laluan (kosong). Kemudian gunakan pembina kelas PDO untuk mewujudkan sambungan dengan pangkalan data, dan tetapkan mod pengendalian ralat kepada mod pengecualian. Akhir sekali, pengendalian pengecualian digunakan untuk menangkap kemungkinan ralat sambungan.
Seterusnya, kami akan memperkenalkan cara menggunakan PDO untuk melaksanakan pernyataan pertanyaan SQL yang kompleks, seperti syarat, pengisihan, halaman dan operasi lain. Katakan kita mempunyai jadual data bernama "pengguna" yang mengandungi medan seperti nama pengguna, umur dan jantina.
2.1 Tanya semua rekod
Untuk menanyakan semua rekod dalam jadual data, anda boleh menggunakan kaedah pertanyaan() dalam PDO. Contoh kod berikut menunjukkan cara untuk menanyakan semua rekod pengguna dalam jadual data:
$stmt = $conn->query('SELECT * FROM users'); while ($row = $stmt->fetch()) { echo $row['name'] . ' ' . $row['age'] . ' ' . $row['gender'] . '<br>'; }
Dalam kod di atas, kaedah query() pertama kali digunakan untuk melaksanakan pernyataan pertanyaan SQL dan mengembalikan set hasil (objek PDOStatement). Kemudian gunakan kaedah fetch() untuk mendapatkan data dalam keputusan yang ditetapkan mengikut baris dan mencetak rekod setiap baris.
2.2 Pertanyaan dengan syarat
Jika anda ingin menanyakan rekod yang memenuhi syarat tertentu, anda boleh menggunakan pernyataan bersyarat (seperti klausa WHERE) dalam pernyataan SQL. Contoh kod berikut menunjukkan cara untuk menanyakan rekod pengguna yang berumur lebih daripada 18 tahun:
$stmt = $conn->query('SELECT * FROM users WHERE age > 18'); while ($row = $stmt->fetch()) { echo $row['name'] . ' ' . $row['age'] . ' ' . $row['gender'] . '<br>'; }
Dalam kod di atas, pernyataan bersyarat WHERE ditambahkan untuk menapis rekod yang memenuhi syarat.
2.3 Isih dan pertanyaan halaman
Dalam aplikasi praktikal, selalunya perlu mengisih dan memaparkan hasil pertanyaan dalam halaman. Contoh kod berikut menunjukkan cara mengisih mengikut medan nama dalam tertib menaik dan melakukan pertanyaan halaman untuk memaparkan 10 rekod setiap halaman:
$page = $_GET['page'] ?? 1; $limit = 10; $offset = ($page - 1) * $limit; $stmt = $conn->query('SELECT * FROM users ORDER BY name ASC LIMIT ' . $limit . ' OFFSET ' . $offset); while ($row = $stmt->fetch()) { echo $row['name'] . ' ' . $row['age'] . ' ' . $row['gender'] . '<br>'; }
Dalam kod di atas, mula-mula dapatkan nombor halaman semasa daripada parameter URL (ditetapkan menggunakan ?? operator Nilai lalai ialah 1). Kemudian tentukan bilangan rekod yang dipaparkan pada setiap halaman (10) dan ofset (offset dikira berdasarkan nombor halaman semasa). Akhir sekali, tambah klausa ORDER BY pada pernyataan pertanyaan SQL untuk mengisih, dan gunakan kata kunci LIMIT dan OFFSET untuk pertanyaan halaman.
Di atas ialah pengenalan dan contoh kod untuk menggunakan PDO untuk melaksanakan pernyataan pertanyaan SQL yang kompleks. Menggunakan PDO boleh memudahkan operasi pangkalan data dan menyediakan fungsi yang berkuasa untuk memudahkan pembangun melaksanakan pelbagai operasi pertanyaan yang kompleks. Dengan menguasai penggunaan PDO, anda boleh mengendalikan tugas berkaitan pangkalan data dengan lebih cekap.
Atas ialah kandungan terperinci PHP dan PDO: Bagaimana untuk melaksanakan pertanyaan SQL yang kompleks. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!