Hướng dẫn mysqli execute query

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

Hướng dẫn mysqli execute query

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():



  • 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

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''''Agos''Greece'),

(2'Anthena''Female''123''''Athens''Greece'),

(3'Jupiter''Male''783''''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.

$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'] . '
'
;         

echo 'Full Names: ' . $row['full_names'] . '
'
;        

echo 'Gender: ' . $row['gender'] . '
'
;         

echo 'Contact No: ' . $row['contact_no'] . '
'
;         

echo 'Email: ' . $row['email'] . '
'
;         

echo 'City: ' . $row['city'] . '
'
;         

echo 'Country: ' . $row['country'] . '

'
;     

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.

Hướng dẫn mysqli execute query

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.

$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','  ','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.

$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` = ''";

$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.

$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

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

$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 "Company Name (Contact Person): $company_name ($contact_name
"
;

}

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:

Fanpage: https://facebook.com/NIIT.ICT/

#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #php