Apabila membangunkan tapak web, kadangkala anda perlu menggabungkan berbilang jadual untuk membuat pertanyaan dan mendapatkan data yang diperlukan. Dalam PHP, anda boleh menggunakan pernyataan pertanyaan kesatuan untuk mencapai fungsi ini. Artikel ini akan memperkenalkan cara menggunakan PHP untuk bersama-sama menanyakan tiga jadual.
Andaikan kita mempunyai tiga jadual: pengguna, pesanan dan item_pesanan. Antaranya, jadual pengguna merekodkan maklumat pengguna, jadual pesanan merekodkan maklumat pesanan, dan jadual item_pesanan merekodkan maklumat item pesanan. Sekarang kita perlu menanyakan semua pesanan untuk setiap pengguna dan semua item baris untuk setiap pesanan. Ini boleh dicapai menggunakan pernyataan pertanyaan bersama berikut:
$sql = "SELECT u.name, o.order_number, i.product_name, i.price FROM users u JOIN orders o ON u.id = o.user_id JOIN order_items i ON o.id = i.order_id WHERE u.id = ?";
Pernyataan ini mula-mula menghubungkan jadual pengguna, jadual pesanan dan jadual item_pesanan melalui kata kunci JOIN, dan kemudian menapis keluar maklumat pengguna yang ditentukan melalui klausa WHERE . Antaranya, kata kunci JOIN digunakan untuk menyertai jadual, dan kata kunci ON digunakan untuk menentukan syarat sambungan.
Dalam pertanyaan di atas, kami perlu menanyakan semua pesanan setiap pengguna dan semua item baris setiap pesanan. Oleh itu, kita perlu menggunakan kata kunci JOIN untuk menyambungkan jadual pengguna, jadual pesanan dan jadual item_pesanan. Terdapat tiga kaedah sambungan:
Dalam contoh ini, kami menggunakan INNER JOIN kerana kami hanya mahu mengembalikan baris yang mempunyai padanan.
Seterusnya, kita perlu menentukan syarat sambungan. Di sini kami menggunakan ID pengguna (users.id) untuk mengaitkan dengan ID pengguna pesanan (orders.user_id) dan ID pesanan (orders.id) untuk mengaitkan ID pesanan item pesanan (order_items.order_id).
Akhir sekali, kami menggunakan klausa WHERE untuk menapis maklumat pengguna yang ditentukan. Di sini, kami menggunakan ruang letak? Sebelum melaksanakan pertanyaan, anda perlu menggunakan kaedah bindParam() atau bindValue() untuk mengikat parameter sebenar kepada pemegang tempat.
Untuk meringkaskan, ini adalah pernyataan PHP yang agak mudah untuk bersama-sama menanyakan tiga jadual. Pertanyaan kesatuan ialah kaedah pertanyaan yang sangat fleksibel dan berkuasa, yang harus digunakan secara fleksibel mengikut keperluan sebenar dalam pembangunan sebenar.
Atas ialah kandungan terperinci Kesatuan PHP bertanya tiga jadual. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!