NTM Solutions

Facebook Youtube Google+

Thứ Năm, 25 tháng 10, 2018

MYSQL – Bài 08 – Lấy dữ liệu từ MySQL

XEM MỤC LỤC CÁC BÀI VIẾT PHP

Lấy dữ liệu từ cơ sở dữ liệu MySQL


Câu lệnh SELECT được dùng để lấy dữ liệu từ 01 hay nhiều bảng:

SELECT column_name(s) FROM table_name

Hoặc chúng ta có thể dùng ký tự * để chọn TẤT CẢ cột từ 01 bảng:

SELECT * FROM table_name

Để học sâu về câu lệnh SQL, các bạn có thể vào đây SQLtutorial.

Lấy dữ liệu với MySQLi


Ví dụ sau chọn các cột id, firstnamelastname từ bảng MyGuests và hiển thị nó lên trang web:

Ví dụ (MySQLi hướng đối tượng)


<?php
$servername = "localhost";
$username = 
"root";
$password = 
"";
$dbname = 
"myDB";

// Tạo kết nối
$conn = new mysqli($servername, $username, $password, $dbname);
// Kiểm tra kết nối
if ($conn->connect_error) {
    
die("Kết nối thất bại: " . $conn->connect_error);
 }

$sql = 
"SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    
// xuất dữ liệu ra từng dòng
    while($row = $result->fetch_assoc()) {
        
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
else {
    
echo "0 kết quả trả về";
}
$conn->close();
?>


Giải thích các dòng mã dùng trong ví dụ trên:

Đầu tiên, chúng ta thiết lập 01 câu truy vấn SQL chọn các cột id, firstname và lastname từ bảng MyGuests. Dòng mã tiếp theo thực thi câu truy vấn và đặt dữ liệu trả về vào 01 biến gọi là $result

Sau đó, dùng hàm num_rows() kiểm tra số dòng dữ liệu trả về có >0 hay không.

Nếu số dòng trả về >0, dùng hàm fetch_assoc() đặt tất cả dữ liệu trả về vào 01 mảng liên kết để chúng ta có thể lặp xuyên qua mảng này. Vòng lặp while() lặp xuyên qua mảng kết quả và xuất dữ liệu từ các cột id, firstname và lastname.

Ví dụ sau cho ra kết quả tương tự ví dụ ở trên nhưng được viết theo dạng MySQLi thủ tục:

Ví dụ (MySQLi thủ tục)


<?php
$servername = "localhost";
$username = 
"root";
$password = 
"";
$dbname = 
"myDB";

// Tạp kết nối
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Kiểm tra kết nối
if (!$conn) {
     
die("Kết nối thất bại: " . mysqli_connect_error());
}

$sql = 
"SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    
// xuất dữ liệu ra từng dòng
    while($row = mysqli_fetch_assoc($result)) {
        
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
else {
    
echo "0 kết quả trả về";
}

mysqli_close($conn);
?>

Giới hạn dữ liệu được chọn từ cơ sở dữ liệu MySQL


MySQL cung cấp câu lệnh LIMIT dùng để xác định số bản ghi trả về.

Câu lệnh LIMIT giúp việc viết mã có kết quả trả về trên nhiều trang dễ dàng hoặc phân trang với SQL, và đặc biệt hữu dụng trên bảng có nhiều dữ liệu. Việc trả về kết quả 01 số lượng lớn các bản ghi có thể gây rắc rối về mặt hiển thị.

Giả dụ chúng ta muốn chọn các bản ghi từ 1 - 30 từ 01 bảng tên là "Orders". Câu truy vấn SQL sẽ trông như thế này:

$sql = "SELECT * FROM Orders LIMIT 30";

Khi câu truy vấn SQL trên thực thi, nó trả về kết quả là 30 bản ghi đầu tiên.

Vậy thì nếu ta chỉ muốn chọn các bản ghi từ 16 – 25 thì mần sao?

Mysql cũng cung cấp 01 cách để xử việc này: dùng OFFSET

Câu truy vấn SQL bên dưới nói rằng "trả về chỉ 10 bản ghi, bắt đầu từ bản ghi thứ 16 (OFFSET 15)":

$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";

Bạn cũng có thể dùng 01 cú pháp ngắn hơn để cho ra kết quả tương tự:

$sql = "SELECT * FROM Orders LIMIT 15, 10";

Chú ý rằng các con số phải đặt ngược lại khi dùng dấu phẩy.

Nếu vẫn chưa rõ các bạn xem thêm video clip sau:

XEM MỤC LỤC CÁC BÀI VIẾT PHP


By #tiensim

Nguồn: sưu tầm