PHP: Lấy dữ liệu từ MySQL database sử dụng MySQLi
Trong bài học này chúng ta sẽ tìm hiểu cách lấy về dữ liệu từ một bảng cho trước sử dụng MySQLi extension. Chuẩn Bị Để chuẩn bị thì chúng ta sẽ tạo một cơ sở dữ liệu và một bảng với dữ liệu mẫu để thực hiện việc đọc dữ liệu từ đó. Cơ sở dữ liệu sẽ tạo được lấy tên là learn_php_mysql_db ...
Trong bài học này chúng ta sẽ tìm hiểu cách lấy về dữ liệu từ một bảng cho trước sử dụng MySQLi extension.
Chuẩn Bị
Để chuẩn bị thì chúng ta sẽ tạo một cơ sở dữ liệu và một bảng với dữ liệu mẫu để thực hiện việc đọc dữ liệu từ đó. Cơ sở dữ liệu sẽ tạo được lấy tên là learn_php_mysql_db
CREATE DATABASE IF NOT EXISTS learn_php_mysql_db;
Trên cơ sở dữ liệu learn_php_mysql_db chúng ta sẽ cần tạo một bảng có tên là posts với hai cột (hay trường) là title và content. Chọn cơ sở dữ liệu mà chúng ta mới tạo ở phía trên learn_php_mysql_db:
USE learn_php_mysql_db;
Sau đó chạy câu lệnh SQL sau để tạo mới một bảng:
CREATE TABLE `posts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `tittle` varchar(255) DEFAULT NULL, `content` text DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Sau đó chúng ta thêm vào một số dữ liệu mẫu như sau:
INSERT INTO posts(`tittle`, `content`) VALUES("Bài viết đầu tiên của tôi", "Hello world!");
Ngoài ra bạn có thể sử dụng PhpMyAdmin để chèn thêm một số dữ liệu thêm nếu muốn.
Kiểm tra lại dữ liệu của bảng posts:
SELECT * FROM posts;
Kết quả hiển thị:
+----+-------------------------------------+--------------+ | id | tittle | content | +----+-------------------------------------+--------------+ | 1 | Bài viết đầu tiên của tôi | Hello world! | +----+-------------------------------------+--------------+ 1 row in set (0.00 sec)
Kết Nối Tới Cơ Sở Dữ Liệu
Sau khi hoàn tất các bước tạo bảng, thêm dữ liệu và kiểm tra lại như ở trên thì bây giờ chúng ta sẽ tìm hiểu cách đọc dữ liệu của bảng sử dụng MySQLi extension. Đầu tiên chúng ta cần thực hiện việc kết nối tới một cơ sở dữ liệu learn_php_mysql_db. Để làm việc này chúng ta sẽ sử dụng hàm mysqli_connect() cung cấp bởi MySQLi extension. Tạo một tập tin posts.php và thêm vào nội dung sau:
<?php $connection = mysqli_connect("localhost", "root", "abcd", "learn_php_mysql_db");
Lấy Dữ Liệu Của Bảng Sử Dụng MySQLi
<?php $connection = mysqli_connect("localhost", "root", "abcd", "learn_php_mysql_db"); $sql="SELECT * FROM posts ORDER BY id"; $result = mysqli_query($connection, $sql); if ($result) { // Hàm `mysql_fetch_row()` sẽ chỉ fetch dữ liệu một record mỗi lần được gọi // do đó cần sử dụng vòng lặp While để lặp qua toàn bộ dữ liệu trên bảng posts while ($row=mysqli_fetch_row($result)) { printf ("Id: %s, Title: %s, Content: %s<br>",$row[0],$row[1], $row[2]); } // Máy tính sẽ lưu kết quả từ việc truy vấn dữ liệu bảng // Do đó chúng ta nên giải phóng bộ nhớ sau khi hoàn tất đọc dữ liệu mysqli_free_result($result); }
Ở đoạn code trên chúng ta sử dụng hàm mysqli_query() của PHP để thực hiện việc gửi câu truy vấn SQL query tới máy chủ cơ sở dữ liệu MySQL. Hàm này thường sẽ trả về một đối tượng mysqli_result được định nghĩa bởi PHP hoặc true trong một số trường hợp.
Tiếp đó chúng ta sử dụng hàm mysqli_fetch_row() trên kết quả trả về. Hàm này thực hiện việc lấy ra (fetch ra) dữ liệu trả về từ database được lưu trong object $result mỗi lần được gọi. Lưu ý rằng mysqli_fetch_row() sẽ fetch theo thứ tự lần lượt từng record trên bảng và do đó chúng ta sẽ sử dụng vòng lặp while để lặp qua từng record cho tới khi không còn giá trị nào nữa. Giá trị trả về của hàm này sẽ là một mảng array được đánh số thứ tự từ 0 tương ứng với tên cột đầu tiên của bảng:
printf ("Id: %s, Title: %s, Content: %s<br>",$row[0],$row[1], $row[2]);
Bây giờ nếu bạn chạy tập tin posts.php trên bạn sẽ thấy kết quản hiển thị lần lượt các thông tin dữ liệu của record trên bảng:
Cuối cùng hàm mysqli_free_result() sẽ giúp giải phóng bộ nhớ sử dụng bởi PHP để lưu dữ liệu trong object $result.