Hướng dẫn query mysql php - truy vấn php mysql

"; class TableRows extends RecursiveIteratorIterator { function __construct($it) { parent::__construct($it, self::LEAVES_ONLY); } function current() { return ""; } function beginChildren() { echo ""; } function endChildren() { echo "" . "\n"; } } $servername = "localhost"; $username = "root"; $password = "1234567890"; $dbname = "myDBPDO"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests"); $stmt->execute(); // thiết lập mảng kết quả thành mảng kết hợp $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { echo $v; } } catch(PDOException $e) { echo "Error: " . $e->getMessage(); } $conn = null; echo "

Câu lệnh select thường dùng để lấy dữ liệu và hiển thị lên website ở cả frontend lẫn backend, đây là câu lệnh thông dụng hay sử dụng nhất trong một website.

Hướng dẫn query mysql php - truy vấn php mysql

Hướng dẫn query mysql php - truy vấn php mysql

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.freetuts.net, không được copy dưới mọi hình thức.

Trong MySQL để lấy danh sách records trong một bảng dữ liệu thì ta sử dụng lệnh select với cú pháp:

SELECT field1, field2 FROM table_name

Bên cạnh đó ta cũng có sử dụng thêm điều kiện where và limit để giới hạn kết quả trả về. Như vậy việc lấy danh sách dữ liệu trong MySQL  bằng PHP thực chất là ta sử dụng PHP để chạy câu truy vấn SQL.Như vậy việc lấy danh sách dữ liệu trong MySQL  bằng PHP thực chất là ta sử dụng PHP để chạy câu truy vấn SQL.

Bài viết này được đăng tại [free tuts .net]

Bây giờ chúng ta cùng tìm hiểu các thao tác lấy dữ liệu với MySQLi.

1. Select data với MySQLi

Chúng ta có hai cách sử dụng đó là sử dụng đối tượng và hàm truyền thống.

Sử dụng MySQLi Object-oriented:

// Kết nối CSDL
$conn = new mysqli('localhost', 'root', 'vertrigo', 'FreetutsDemo');

// Kiểm tra kết nối
if ($conn->connect_error) {
    die("Kết nối thất bại: " . $conn->connect_error);
} 

// Câu SQL lấy danh sách
$sql = "SELECT id, title, content FROM News";

// Thực thi câu truy vấn và gán vào $result
$result = $conn->query($sql);

// Kiểm tra số lượng record trả về có lơn hơn 0
// Nếu lớn hơn tức là có kết quả, ngược lại sẽ không có kết quả
if ($result->num_rows > 0) 
{
    // Sử dụng vòng lặp while để lặp kết quả
    while($row = $result->fetch_assoc()) {
        echo "title: " . $row["title"]. " - Content: " . $row["content"]."
"; } } else { echo "Không có record nào"; } // ngắt kết nối $conn->close();

Sử dụng MySQLi Procedural:

// Kết nối CSDL
$conn = mysqli_connect('localhost', 'root', 'vertrigo', 'FreetutsDemo');

// Kiểm tra kết nối
if (!$conn) {
    die("Kết nối thất bại: " . mysqli_connect_error());
}

// Câu SQL lấy danh sách
$sql = "SELECT id, title, content FROM News";

// Thực thi câu truy vấn và gán vào $result
$result = mysqli_query($conn, $sql);

// Kiểm tra số lượng record trả về có lơn hơn 0
// Nếu lớn hơn tức là có kết quả, ngược lại sẽ không có kết quả
if (mysqli_num_rows($result) > 0) 
{
    // Sử dụng vòng lặp while để lặp kết quả
    while($row = mysqli_fetch_assoc($result)) {
        echo "title: " . $row["title"]. " - Content: " . $row["content"]. "
"; } } else { echo "Không có record nào"; } // ngắt kết nối mysqli_close($conn);

2. Select data với PDO

Chúng ta sẽ sử dụng cơ chế Prepared để truy vấn CSDL.

try {
    // Kết nối CSDL
    $conn = new PDO("mysql:host=localhost;dbname=FreetutsDemo", 'root', 'vertrigo');
    
    // Khai báo exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // Sử đụng Prepare 
    $stmt = $conn->prepare("SELECT id, title, content FROM News"); 
    
    // Thực thi câu truy vấn
    $stmt->execute();

    // Khai báo fetch kiểu mảng kết hợp
    $stmt->setFetchMode(PDO::FETCH_ASSOC); 
    
    // Lấy danh sách kết quả
    $result = $stmt->fetchAll();
    
    // Lặp kết quả
    foreach ($result as $item){
        echo $item['title'] . ' - '. $item['content'];
    }
}
catch(PDOException $e) {
    echo "Lỗi: " . $e->getMessage();
}

// Ngắt kết nối
$conn = null;

3. Lời kết

Sau khi có kết quả trả về thì chúng ta sẽ kết hợp với giao diện HTML để hiển thị ra bên ngoài website. Công đoạn này phụ thuộc vào từng layout nên mình không đưa ra ví dụ minh họa.

Bài tiếp theo chúng ta sẽ học cách thực hiện lệnh delete dữ liệu với PHP.



Kiểu hướng đối tượngselect dữ liệu từ MySQL trong PHP bằng cách sử dụng MySQLi PDO.

Khi kết nối thành công sẽ tiếp tục dòng code bên dưới đây.

Download file ví dụ

SELECT column_name(s) FROM table_name

Trong file download đã có sẵn file tintuc.sql, file này là file dữ liệu mẫu, sau khi đã tạo database chúng ta có thể đưa dữ liệu từ file tintuc.sql bằng thao tác import có trong phpMyAdmin.tintuc.sql, file này là file dữ liệu mẫu, sau khi đã tạo database chúng ta có thể đưa dữ liệu từ file tintuc.sql bằng thao tác import có trong phpMyAdmin.


Bài này sẽ hướng dẫn bạn select dữ liệu từ MySQL trong PHP bằng cách sử dụng MySQLi và PDO. select dữ liệu từ MySQL trong PHP bằng cách sử dụng MySQLi và PDO.

Câu lệnh SELECT được sử dụng để lấy dữ liệu từ một hoặc nhiều bảng:

Cú pháp câu lệnh SELECT trong MySQL:

connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

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

if ($result->num_rows > 0) {
    // output dữ liệu trên trang
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " 
            . $row["lastname"]. "
"; } } else { echo "0 results"; } $conn->close(); ?>

Kết quả:

id: 1 - Name: David Vinh
id: 2 - Name: Tran Tan

Đoạn code trên có thể được giải thích như sau:

Đầu tiên, chúng ta thiết lập một truy vấn SQL để chọn các cột id, firstname và lastname từ bảng MyGuests. Dòng code tiếp theo thực thi truy vấn và đưa kết quả vào một biến gọi là $result.

hoặc chúng ta có thể sử dụng ký tự * để chọn TẤT CẢ các cột từ một bảng:

Select dữ liệu với MySQLi

Ví dụ (MySQLi hướng thủ tục)

 0) {
    // hiển thị dữ liệu trên trang
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " 
            . $row["lastname"]. "
"; } } else { echo "0 results"; } mysqli_close($conn); ?>

Kết quả:

id: 1 - Name: David Vinh
id: 2 - Name: Tran Tan


Đoạn code trên có thể được giải thích như sau:

Đầu tiên, chúng ta thiết lập một truy vấn SQL để chọn các cột id, firstname và lastname từ bảng MyGuests. Dòng code tiếp theo thực thi truy vấn và đưa kết quả vào một biến gọi là $result.

";
echo "
IdFirstnameLastname
" . parent::current(). "
"; ?>

Kết quả:



  • Đoạn code trên có thể được giải thích như sau:
  • Đầu tiên, chúng ta thiết lập một truy vấn SQL để chọn các cột id, firstname và lastname từ bảng MyGuests. Dòng code tiếp theo thực thi truy vấn và đưa kết quả vào một biến gọi là $result.
  • Trang chủ
  • Hướng dẫn học

Hướng dẫn học

  • Học PHP
  • Kết nối MySQL
  • Kết nối PHP & MySQL là bước cơ bản khi bạn muốn bất kỳ thao tác nào liên quan đến MySQL.
  • Từ phiên bản PHP 5.5 trở đi, thư viện MySQL sẽ không còn được hỗ trợ, và phiên bản PHP 7 trở lên đã gỡ bỏ hoàn toàn thư viện MySQL, thay vào đó 2 thư viện khác được sử dụng là MySQLi và PDO.

    • Trong phạm vi của phần hướng dẫn PHP này chỉ đề cập đến MySQLi, vì cấu trúc và các viết tương tự như thư viện MySQL trước đó.
    • MySQLi có 2 lựa chọn cách viết khác nhau:

Theo kiểu thủ tục: viết giống như MySQL chỉ khác là thay đổi mysql thành mysqli.

Kiểu thủ tục (Procedural) (Procedural)
(Procedural)
Kiểu hướng đối tượng (Object-Oriented) (Object-Oriented)
(Object-Oriented)
Mô tả
$ketnoi = mysqli_connect() = mysqli_connect() = mysqli_connect() $ketnoi = new mysqli() = new mysqli() = new mysqli() Tạo kết nối database
mysqli_connect_error() $ketnoi->connect_error ->connect_error ->connect_error Lỗi kết nối
mysqli_close($ketnoi) $ketnoi) $ketnoi) $ketnoi->close() ->close() ->close() Ngắt kết nối MySQLi
$ketqua = mysqli_query($ketnoi, $sql) = mysqli_query($ketnoi, $sql) = mysqli_query($ketnoi, $sql) $ketqua = $ketnoi->query($sql) = $ketnoi->query($sql) = $ketnoi->query($sql) Truy vấn table từ $ketnoi Với $sql là câu truy vấn select $ketnoi Với $sql là câu truy vấn select $ketnoi
Với $sql là câu truy vấn select
mysqli_num_rows($ketqua) $ketqua) $ketqua) $ketqua->num_rows ->num_rows ->num_rows Số lượng số hàng có trong table.
mysqli_fetch_assoc($ketqua) $ketqua) $ketqua) $ketqua->fetch_assoc() ->fetch_assoc() ->fetch_assoc() Số lượng số hàng có trong table.

mysqli_fetch_assoc($ketqua) $ketqua)

$ketqua->fetch_assoc() ->fetch_assoc()

mysqli_fetch_assoc($ketqua)

$ketqua->fetch_assoc()

Kết nối MySQLi

Nếu chưa biết về cách tạo database và thông tin kết nối thì bạn có thể xem lại cách tạo từ phpMyAdmin.

// Kết nối CSDL
$conn = new mysqli('localhost', 'root', 'vertrigo', 'FreetutsDemo');

// Kiểm tra kết nối
if ($conn->connect_error) {
    die("Kết nối thất bại: " . $conn->connect_error);
} 

// Câu SQL lấy danh sách
$sql = "SELECT id, title, content FROM News";

// Thực thi câu truy vấn và gán vào $result
$result = $conn->query($sql);

// Kiểm tra số lượng record trả về có lơn hơn 0
// Nếu lớn hơn tức là có kết quả, ngược lại sẽ không có kết quả
if ($result->num_rows > 0) 
{
    // Sử dụng vòng lặp while để lặp kết quả
    while($row = $result->fetch_assoc()) {
        echo "title: " . $row["title"]. " - Content: " . $row["content"]."
"; } } else { echo "Không có record nào"; } // ngắt kết nối $conn->close();
0
// Kết nối CSDL
$conn = new mysqli('localhost', 'root', 'vertrigo', 'FreetutsDemo');

// Kiểm tra kết nối
if ($conn->connect_error) {
    die("Kết nối thất bại: " . $conn->connect_error);
} 

// Câu SQL lấy danh sách
$sql = "SELECT id, title, content FROM News";

// Thực thi câu truy vấn và gán vào $result
$result = $conn->query($sql);

// Kiểm tra số lượng record trả về có lơn hơn 0
// Nếu lớn hơn tức là có kết quả, ngược lại sẽ không có kết quả
if ($result->num_rows > 0) 
{
    // Sử dụng vòng lặp while để lặp kết quả
    while($row = $result->fetch_assoc()) {
        echo "title: " . $row["title"]. " - Content: " . $row["content"]."
"; } } else { echo "Không có record nào"; } // ngắt kết nối $conn->close();
1

Nếu chưa biết file PHP được tạo ở đâu thì bạn có thể xem lại Thư mục làm việc khi cài XAMPP.

Kiểu hướng đối tượng

Khi kết nối thành công sẽ tiếp tục dòng code bên dưới đây. tintuc.sql, file này là file dữ liệu mẫu, sau khi đã tạo database chúng ta có thể đưa dữ liệu từ file tintuc.sql bằng thao tác import có trong phpMyAdmin.