Hướng dẫn php mysqli select from two tables - php mysqli chọn từ hai bảng

0

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có dữ liệu được lưu trữ trong hai bảng khác nhau được gọi là "bài viết" và "bình luận". Bây giờ tôi đang sử dụng hai mysqli_query.

$q = mysqli_query($db,"SELECT * FROM posts WHERE username='$username'"); $q = mysqli_query($db,"SELECT * FROM comments WHERE username='$username'");

Tôi có thể làm cái này chỉ với một mysqli_query hoặc với 3 bảng không?

Hỏi ngày 12 tháng 4 năm 2016 lúc 14:05Apr 12, 2016 at 14:05

2

Bạn có thể chỉ cần tham gia cả hai bảng:

$q = mysqli_query($db,"SELECT * FROM posts LEFT JOIN comments ON comments.username=posts.username WHERE comments.username='$username'");

Tuy nhiên, có vẻ như bạn không sử dụng ID. Tôi khuyên bạn nên tạo các trường tự động ID để tạo mối quan hệ giữa các bảng. Nếu bạn không hiểu ý tôi, hãy cố gắng làm theo một hướng dẫn và trong một hoặc hai của chúng tôi, bạn sẽ học được nhiều hơn, hơn là chỉ bằng cách nhảy vào mã hóa cố gắng làm mọi thứ và cố gắng hiểu cách họ làm việc mà không biết bạn có phải Làm đúng.

Đã trả lời ngày 12 tháng 4 năm 2016 lúc 14:18Apr 12, 2016 at 14:18

BeowulfbeowulfBeoWulf

6072 huy hiệu vàng6 Huy hiệu bạc17 Huy hiệu đồng2 gold badges6 silver badges17 bronze badges

2

Trong các chương trước, chúng tôi đã nhận được dữ liệu từ một bảng cùng một lúc. Điều này đủ tốt cho việc thực hiện đơn giản, nhưng trong hầu hết các cách sử dụng MySQL của thế giới thực, bạn thường sẽ cần phải lấy dữ liệu từ nhiều bảng trong một truy vấn.

Bạn có thể sử dụng nhiều bảng trong truy vấn SQL duy nhất của mình. Hành động tham gia vào MySQL đề cập đến việc đập hai hoặc nhiều bảng vào một bảng.

Bạn có thể sử dụng các tham gia trong các câu lệnh Chọn, Cập nhật và Xóa để tham gia các bảng MySQL. Chúng ta sẽ thấy một ví dụ về sự tham gia bên trái cũng khác với sự tham gia MySQL đơn giản.

Sử dụng tham gia tại dấu nhắc lệnh

Giả sử chúng tôi có hai bảng tcount_tbl và hướng dẫn_tbl, trong các hướng dẫn. Bây giờ hãy xem các ví dụ được đưa ra dưới đây -tcount_tbl and tutorials_tbl, in TUTORIALS. Now take a look at the examples given below −

Thí dụ

Các ví dụ sau -

root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT * FROM tcount_tbl; +-----------------+----------------+ | tutorial_author | tutorial_count | +-----------------+----------------+ | mahran | 20 | | mahnaz | NULL | | Jen | NULL | | Gill | 20 | | John Poul | 1 | | Sanjay | 1 | +-----------------+----------------+ 6 rows in set (0.01 sec) mysql> SELECT * from tutorials_tbl; +-------------+----------------+-----------------+-----------------+ | tutorial_id | tutorial_title | tutorial_author | submission_date | +-------------+----------------+-----------------+-----------------+ | 1 | Learn PHP | John Poul | 2007-05-24 | | 2 | Learn MySQL | Abdul S | 2007-05-24 | | 3 | JAVA Tutorial | Sanjay | 2007-05-06 | +-------------+----------------+-----------------+-----------------+ 3 rows in set (0.00 sec) mysql>

Bây giờ chúng ta có thể viết một truy vấn SQL để tham gia hai bảng này. Truy vấn này sẽ chọn tất cả các tác giả từ bảng Hướng dẫn_tbl và sẽ chọn số lượng hướng dẫn tương ứng từ Tcount_TBL.tutorials_tbl and will pick up the corresponding number of tutorials from the tcount_tbl.

mysql> SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count → FROM tutorials_tbl a, tcount_tbl b → WHERE a.tutorial_author = b.tutorial_author; +-------------+-----------------+----------------+ | tutorial_id | tutorial_author | tutorial_count | +-------------+-----------------+----------------+ | 1 | John Poul | 1 | | 3 | Sanjay | 1 | +-------------+-----------------+----------------+ 2 rows in set (0.01 sec) mysql>

Sử dụng tham gia trong tập lệnh PHP

PHP sử dụng hàm mysqli truy vấn () hoặc mysql_query () để lấy bản ghi từ các bảng MySQL bằng cách sử dụng các kết nối. Hàm này có hai tham số và trả về thành công hoặc sai khi thất bại.mysqli query() or mysql_query() function to get records from a MySQL tables using Joins. This function takes two parameters and returns TRUE on success or FALSE on failure.

Cú pháp

$mysqli→query($sql,$resultmode) Sr.No.Mô tả về Thông Số
1

$sql

Yêu cầu - Truy vấn SQL để nhận bản ghi từ nhiều bảng bằng tham gia.

2

$resultmode

Tùy chọn - Hằng số mysqli_use_result hoặc mysqli_store_result tùy thuộc vào hành vi mong muốn. Theo mặc định, mysqli_store_result được sử dụng.

Đầu tiên tạo một bảng trong MySQL bằng tập lệnh sau và chèn hai bản ghi.

create table tcount_tbl( tutorial_author VARCHAR(40) NOT NULL, tutorial_count int ); insert into tcount_tbl values('Mahesh', 3); insert into tcount_tbl values('Suresh', 1);

Thí dụ

Hãy thử ví dụ sau để nhận bản ghi từ hai bảng sử dụng tham gia. -

Sao chép và dán ví dụ sau dưới dạng mysql_example.php -

<html> <head> <title>Using joins on MySQL Tables</title> </head> <body> <?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli→connect_errno ) { printf("Connect failed: %s<br />", $mysqli→connect_error); exit(); } printf('Connected successfully.<br />'); $sql = 'SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count FROM tutorials_tbl a, tcount_tbl b WHERE a.tutorial_author = b.tutorial_author'; $result = $mysqli→query($sql); if ($result→num_rows > 0) { while($row = $result→fetch_assoc()) { printf("Id: %s, Author: %s, Count: %d <br />", $row["tutorial_id"], $row["tutorial_author"], $row["tutorial_count"]); } } else { printf('No record found.<br />'); } mysqli_free_result($result); $mysqli→close(); ?> </body> </html>

Đầu ra

Truy cập mysql_example.php được triển khai trên máy chủ web Apache và xác minh đầu ra.

Connected successfully. Id: 1, Author: Mahesh, Count: 3 Id: 2, Author: Mahesh, Count: 3 Id: 3, Author: Mahesh, Count: 3 Id: 5, Author: Suresh, Count: 1

MySQL rời đi

Một tham gia còn lại MySQL khác với một tham gia đơn giản. Một sự tham gia còn lại của MySQL cung cấp thêm một số cân nhắc cho bảng ở bên trái.

Nếu tôi tham gia bên trái, tôi sẽ nhận được tất cả các bản ghi phù hợp theo cùng một cách và ngoài ra tôi cũng nhận được một bản ghi thêm cho mỗi bản ghi chưa từng có trong bảng bên trái của sự tham gia: do đó đảm bảo (trong ví dụ của tôi) rằng mỗi tác giả đề cập đến.LEFT JOIN, I get all the records that match in the same way and IN ADDITION I get an extra record for each unmatched record in the left table of the join: thus ensuring (in my example) that every AUTHOR gets a mention.

Thí dụ

Hãy thử ví dụ sau để hiểu tham gia bên trái.

root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count → FROM tutorials_tbl a LEFT JOIN tcount_tbl b → ON a.tutorial_author = b.tutorial_author; +-------------+-----------------+----------------+ | tutorial_id | tutorial_author | tutorial_count | +-------------+-----------------+----------------+ | 1 | John Poul | 1 | | 2 | Abdul S | NULL | | 3 | Sanjay | 1 | +-------------+-----------------+----------------+ 3 rows in set (0.02 sec)

Bạn sẽ cần phải thực hành nhiều hơn để làm quen với các tham gia. Đây là một chút khái niệm phức tạp trong MySQL/SQL và sẽ trở nên rõ ràng hơn trong khi thực hiện các ví dụ thực tế.

Làm thế nào để chọn dữ liệu từ 2 bảng trong PHP?

Nếu bạn muốn tải dữ liệu từ nhiều bảng thì tại thời điểm đó, bạn có thể sử dụng từ khóa tham gia bên trong và hợp nhất hai bảng hoặc nhiều bảng với cột chung giữa hai hoặc nhiều bảng.Ở đây tôi đã sử dụng hai thương hiệu và sản phẩm.Bảng thương hiệu có hai cột Brand_id và Brand_name, Brand_id là khóa chính.use inner join keyword and merge two table or more table with common column between two or more table. Here I have use two table brand and product. Brand table has two column brand_id and brand_name, brand_id is a primary key.

Làm thế nào để tham gia 2 bảng trong MySQLI bằng PHP?

Bạn có thể sử dụng nhiều bảng trong truy vấn SQL duy nhất của mình.Hành động tham gia vào MySQL đề cập đến việc đập hai hoặc nhiều bảng vào một bảng.Bạn có thể sử dụng các tham gia trong các câu lệnh Chọn, Cập nhật và Xóa để tham gia các bảng MySQL.Chúng ta sẽ thấy một ví dụ về sự tham gia bên trái cũng khác với sự tham gia MySQL đơn giản.use JOINS in the SELECT, UPDATE and DELETE statements to join the MySQL tables. We will see an example of the LEFT JOIN also which is different from the simple MySQL JOIN.

Chủ đề