Hướng dẫn thao tác với Database bằng các hàm MySQLi

Ngày đăng: 20/06/2019   -    Cập nhật: 07/12/2020


PHP có một bộ sưu tập của các hàm MySQLi được xây dựng sẵn để thao tác cơ sở dữ liệu.


Trong bài này bạn sẽ được học về:



  • mysqli_connect function
  • mysqli_select_db function
  • mysqli_query function
  • mysqli_num_rows function
  • mysqli_fetch_array function
  • mysqli_close function
  • PHP Data Access Object PDO


Cách thao tác với CSDL sử dụng hàm MySQLi trong PHP

Cách thao tác với CSDL sử dụng hàm MySQLi trong PHP

1. Hàm mysqli_connect trong PHP


Hàm mysqli_connect được sử dụng để kết nối với một MySQL database server. 

Hàm mysqli có cú pháp sau:




$db_handle = mysqli_connect($db_server_name$db_user_name$db_password);
 


Giải thích cú pháp của hàm mysqli_connect:


  • $db_handle là biến sử dụng để kết nối với cơ sở dữ liệu.
  • mysqli_connect(...) là hàm cho phép php kết nối ới CSDL
  • $server_name là tên hoặc địa chỉ IP của hosting MySQL Server
  • $user_name là giá trị user name trong MySQL server

2. Hàm mysqli_select_db


Các hàm mysqli_select_db được sử dụng để chọn một cơ sở dữ liệu.


Hàm mysqli_select có cú pháp như sau:




mysqli_select_db(connection, dbname);
 

Giải thích hàm mysqli_select_db:


  • mysqli_select_db(...) là hàm lựa chọn cơ sở dữ liệu, trả về true hoặc false
  • connection Xác định kết nối MySQL để sử dụng
  • dbname Xác định cơ sở dữ liệu để được sử dụng

3. Hàm mysqli_query trong PHP


Các hàm mysqli_query() thực hiện một truy vấn đến database


Cú pháp hàm mysqli_query():




mysqli_query(connection, query, resultmode);
 


Giải thích về hàm mysqli_query():


  • conection chỉ định kết nối MySQL sử dụng
  • query chỉ định chuỗi truy vấn
  • resultmode chỉ định chế độ của kết quả trả về (MYSQLI_STORE_RESULT là mặc định, còn nếu cần phải lấy số lượng lớn dữ liệu thì sử dụng MYSQLI_USE_RESULT)


Đối với kết quả truy vấn SELECT, SHOW, DESCRIBE, hoặc EXPLAIN thành công sẽ trả về object. Các kết quả truy vấn thành công khác trả về true. Nếu không thì trả về false.


> Các truy vấn được truyền vào là SQL. Nếu bạn chưa biết về SQL thì HỌC SQL CĂN BẢN tại đây nhé.


4. Hàm mysqli_num_rows trong PHP


Các hàm mysqli_num_rows() trả về số lượng hàng trong một tập kết quả.


Cú pháp hàm mysqli_num_rows():




mysqli_num_rows(result);
 


  • rusult là tập hợp các kết quả trả về từ các hàm mysqli_query(), mysqli_store_result() hoặc mysqli_use_result()

5. Hàm mysqli_fetch_array trong PHP


Hàm mysqli_fetch_array() tìm nạp một hàng kết quả dưới dạng một mảng kết hợp, một mảng số hoặc cả hai.


> Lưu ý: Các fieldname trả về từ hàm này là phân biệt hoa thường.


Cú pháp hàm mysquli_fetch_arry:




mysqli_fetch_array(result, resulttype);
 

  • "result" là một tập hợp kết quả trả về từ các hàm mysqli_query(), mysqli_store_result() hoặc mysqli_use_result()
  • resulttype là tùy chọn. Chỉ định loại mảng nào sẽ được trả về. Có thể là một trong những giá trị sau: MYSQLI_ASSOC, MYSQLI_NUM, MYSQLI_BOTH

Hàm mysqli_fecth_array trả về một mảng chuỗi tương ứng với các lấy hàng. Null nếu không có thêm hàng nào trong kết quả trả về.

6. Hàm mysqli_close() trong PHP


Hàm mysqli_close() thực hiện việc đóng kết nối cơ sở dữ liệu đã kết nối trước đó.


Cú pháp hàm mysqli_close():




mysqli_close(connection);
 

  • "connection" chỉ định MySQL database sẽ đóng

Giá trị trả về của hàm mysqli_close()True nếu thành công và False nếu thất bại

7. Ví dụ sử dụng các hàm MySQLi đã cho để kết nối với cơ sở dữ liệu.


Hãy cùng xem các ví dụ thực tế tận dụng các hàm MySQLi này.


Trước tiên ta tạo một database bằng MySQL. Giả định bạn đã biết về MySQL và SQL. Nếu không thì bạn chỉ cần copy code là được.


Chúng ta sẽ tạo một cơ sở dữ liệu đơn giản gọi là my_personal_contacts chỉ với một bảng. 


3 bước để tạo cơ sở dữ liệu và bảng:



  • Kết nối với MySQL bằng phpMyAdmin, v.v ... 
  • Tạo cơ sở dữ liệu có tên my_person_contacts
  • Thực thi tập lệnh hiển thị bên dưới để tạo bảng và chèn một số dữ liệu demo



<?php

CREATE TABLE IF NOT EXISTS `my_contacts` (

  `id` int(11) NOT NULL AUTO_INCREMENT,
  `full_names` varchar(255) NOT NULL,
  `gender` varchar(6) NOT NULL,
  `contact_no` varchar(75) NOT NULL,
  `email` varchar(255) NOT NULL,
  `city` varchar(255) NOT NULL,
  `country` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)

) ENGINE = InnoDB  DEFAULT CHARSET = latin1 AUTO_INCREMENT = 5 ;

INSERT INTO `my_contacts` (
    `id`,
    `full_names`,
    `gender`,
    `contact_no`,
    `email`,
    `city`,
    `country`)

VALUES
(1'Zeus''Male''111''zeus@olympus.mt.co''Agos''Greece'),
(2'Anthena''Female''123''anthena@olympus.mt.co''Athens''Greece'),
(3'Jupiter''Male''783''jupiter@planet.pt.co''Rome''Italy'),
(4'Venus''Female''987''venu @planet.pt.co''Mars''Italy');

?>
 

Bây giờ chúng ta có một cơ sở dữ liệu được thiết lập mà chúng ta sẽ thao tác từ PHP. 

Đọc các bản ghi từ cơ sở dữ liệu. Bây giờ chúng ta sẽ tạo một chương trình in các bản ghi từ cơ sở dữ liệu.




<?php
    $dbh = mysqli_connect('localhost''root''melody'); 
    // Kết nối tới MySQL server

    if (!$dbh)     
    die("Unable to connect to MySQL: " . mysqli_error());
    // Nếu kết nối thất bại thì đưa ra thông báo lỗi
    
    if (!mysqli_select_db($dbh,'my_personal_contacts'))     
    die("Unable to select database: " . mysqli_error());
    // Thông báo lỗi nếu chọn CSDL thất bại
    
    $sql_stmt = "SELECT * FROM my_contacts"
    // Câu lệnh select
    
    $result = mysqli_query($dbh,$sql_stmt);
    // Thực thi câu lệnh SQL
     
    if (!$result)     
        die("Database access failed: " . mysqli_error()); 
        // Thông báo lỗi nếu thực thi thất bại
        
        $rows = mysqli_num_rows($result); 
        // Lấy số hàng trả về
    
    if ($rows) {
        while ($row = mysqli_fetch_array($result)) {         
            echo 'ID: ' . $row['id'] . '<br>';         
            echo 'Full Names: ' . $row['full_names'] . '<br>';        
            echo 'Gender: ' . $row['gender'] . '<br>';         
            echo 'Contact No: ' . $row['contact_no'] . '<br>';         
            echo 'Email: ' . $row['email'] . '<br>';         
            echo 'City: ' . $row['city'] . '<br>';         
            echo 'Country: ' . $row['country'] . '<br><br>';     
        } 
    } 
mysqli_close($dbh); // Đóng kết nối CSDL
?>
 

Thực thi đoạn code trên trả về kết quả được hiển thị như trong hình bên dưới đây.

In các bản ghi từ cơ sở dữ liệu

In các bản ghi từ cơ sở dữ liệu


Chúng ta thực hiện chèn các bản ghi mới.


Nào, hãy xem xét một ví dụ có thêm bản ghi mới vào bảng của chúng ta. Code dưới đây cho bạn thấy việc thực hiện.



<?php
    $dbh = mysqli_connect('localhost''root''melody'); 
    // Kết nối với MySQL Server

    if (!$dbh)     
    die("Unable to connect to MySQL: " . mysqli_error()); 
    // Thông báo lỗi nếu kết nối thất bại 
    
    if (!mysqli_select_db($dbh'my_personal_contacts'))     
    die("Unable to select database: " . mysql_error()); 
    // Thông báo lỗi nếu chọn CSDL thất bại
    
    $sql_stmt = "INSERT INTO `my_contacts` (`full_names`,`gender`,`contact_no`,`email`,`city`,`country`)"
    $sql_stmt .= "VALUES('Poseidon','Mail','541',' poseidon@sea.oc ','Troy','Ithaca')"
    
    $result = mysqli_query($dbh$sql_stmt); // Thực thi câu lệnh SQL
    
    if (!$result) {
        die("Adding record failed: " . mysqli_error()); 
        // Thông báo lỗi nếu thực thi câu lệnh thất bại
    } else {
        echo "Poseidon has been successfully added to your contacts list";
    }

    mysqli_close($dbh); // Đóng kết nối CSDL 
?>
 

Thực thi các câu lệnh trên cho kết quả “Poseidon has been successfully added to your contacts list”, quay trở lại ví dụ truy vấn đã chọn và truy xuất lại contacts.


Xem nếu Poseidon đã được thêm vào danh sách. 


Cập nhật bản ghi, bây giờ hãy xem một ví dụ cập nhật một bản ghi trong cơ sở dữ liệu. 


Giả sử Poseidon đã thay đổi số điện thoại và địa chỉ email của mình.




<?php
    $dbh = mysqli_connect('localhost''root''melody'); 
    // Kết nối tới MySQL Server
    
    if (!$dbh)    
    die("Unable to connect to MySQL: " . mysqli_error()); 
    // Thông báo lỗi nếu kết nối thất bại 
    
    if (!mysqli_select_db($dbh,'my_personal_contacts'))     
    die("Unable to select database: " . mysql_error()); 
    // Thông báo lỗi nếu chọn CSDL thất bại
    
    $sql_stmt = "UPDATE `my_contacts` SET `contact_no` = '785',`email` = 'poseidon@ocean.oc'";
    $sql_stmt .= "WHERE `id` = 5";
    
    $result = mysqli_query($dbh,$sql_stmt);
    // Thực thi câu lệnh SQL

    if (!$result) {
        die("Deleting record failed: " . mysqli_error());
        // Thông báo lỗi nếu thực thi thất bại
    } else {
        echo "ID number 5 has been successfully updated";
    }
    
    mysqli_close($dbh); //close the database connection
?>
 

Xóa bản ghi



Bây giờ hãy xem một ví dụ loại bỏ các bản ghi khỏi cơ sở dữ liệu. Chúng ta phải xóa Venus khỏi cơ sở dữ liệu của chúng ta.



<?php
    $dbh = mysqli_connect('localhost''root''melody'); 
    // Kết nối với MySQL Server
    
    if (!$dbh)     
    die("Unable to connect to MySQL: " . mysqli_error()); 
    // Thông báo lỗi nếu kết nối thất bại
    
    if (!mysqli_select_db($dbh,'my_personal_contacts'))     
    die("Unable to select database: " . mysqli_error()); 
    // Thông báo lỗi nếu chọn CSDL thất bại
    
    $id = 4
    // ID của Venus trong CSQL
    
    $sql_stmt = "DELETE FROM `my_contacts` WHERE `id` = $id"
    // Câu lệnh SQL Delete
    
    $result = mysqli_query($dbh,$sql_stmt); 
    // Thực thi câu lệnh SQL
    
    if (!$result) {
        die("Deleting record failed: " . mysqli_error());
        // Thông báo lỗi nếu thực thi thất bại 
    } else {
        echo "ID number $id has been successfully deleted";
    }
    
    mysqli_close($dbh); // Đóng kết nối CSDL
?>
 

8. Truy cập dữ liệu bằng cách sử dụng PDO trong PHP


PDO là một class cho phép chúng ta thao tác với các cơ sở dữ liệu khác nhau như MySQL, PostGres, MS SQL Server, v.v ... 


Đoạn code dưới đây cho thấy phương thức truy cập cơ sở dữ liệu bằng cách sử dụng PDO.


Chú ý: Đoạn code dưới đây giả định bạn đã biết kiến thức SQL, mảng, xử lý ngoại lệ và vòng lặp foreach




<?php
    try {    
        $pdo = new PDO("mysql:host=localhost;dbname=my_personal_contacts"'root''melody');
        
        $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $pdo -> exec('SET NAMES "utf8"');
        
        $sql_stmt = "SELECT * FROM `my_contacts`";
        $result = $pdo->query($sql_stmt);
        $result -> setFetchMode(PDO::FETCH_ASSOC);
        $data = array();
        foreach ($result as $row) {
            $data[] = $row;
        }
        print_r($data);
    }
    catch (PDOException $e) {
        echo $e -> getMessage();
    }
?>
 


  • try {....} catch {...} là block xử lý ngoại lệ
  • $pdo = new PDO("mysql...) là cấu trúc lệnh để tạo PDO và truyền data driver, tên máy chủ, id và mật khẩu
  • $pdo->setAtt… thiết lập chế độ thuộc tính lỗi và ngoại lệ
  • $pdo->exec('SET NA… thiết lập định dạng encoding


ODBC là viết tắt của Open Database Connectivity. Nó có cú pháp cơ bản sau.



$conn = odbc_connect($dsn$user_name$password);
 


  • odbc_connect là hàm được PHP dựng sẵn
  • $dsn là tên nguồn data ODBC
  • $user_name là tùy chọn, nó sử dụng cho ODBC user name
  • $password là tùy chọn, nó sử dụng cho ODBC password


Ví dụ bên dưới đây giả sử:


  • Bạn đang sử dụng hệ điều hành Windows
  • Bạn đã tạo một liên kết ODBC đến cơ sở dữ liệu Microsoft Access là Northwind



<?php
    $dbh = odbc_connect('northwind''''');
    
    if (!$dbh) {     
        exit("Connection Failed: " . $dbh); 
    }

    $sql_stmt = "SELECT * FROM customers"
    $result = odbc_exec($dbh$sql_stmt);
     
    if (!$result) {
        exit("Error access records"); 
    } 

    while (odbc_fetch_row($result)) {
        $company_name = odbc_result($result"CompanyName");    
        $contact_name = odbc_result($result"ContactName");     
        echo "<b>Company Name (Contact Person):</b> $company_name ($contact_name) <br>";
    }

    odbc_close($dbh);
?>
 

Tổng kết


Qua bài hướng dẫn này bạn đã biết các hàm MySQLi cơ bản để sử dụng thao tác với CSDL trong PHP, cũng như cách thức sử dụng PDO để thay thế.


  • MySQL là một hệ quản trị cơ sở dữ liệu quan hệ nguồn mở có sẵn trên hầu hết các máy chủ lưu trữ web
  • PHP có một bộ sưu tập các hàm dựng sẵn phong phú giúp đơn giản hóa việc làm việc với MySQL
  • PDO là từ viết tắt của PHP Data Object, nó được sử dụng để kết nối với các cơ sở dữ liệu khác nhau bằng cùng một đối tượng
  • PHP sử dụng hàm odbc_connect để thao tác cơ sở dữ liệu thông qua ODBC

> Nếu bạn đang tích cực học PHP để đi làm thì nên tham gia ngay khóa học LẬP TRÌNH WEB PHP. Khóa học do doanh nghiệp liên kết đào tạo nhân lực, học thực tế, tuyển dụng ngay cuối khóa.

---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #php
Bình luận Facebook
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!