1 
(Tài liệu lƣu hành nội bộ) 
TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT HƢNG YÊN 
KHOA CÔNG NGHỆ CÔNG NGHỆ THÔNG TIN 
LẬP TRÌNH WEB ĐỘNG VỚI PHP & MYSQL 
Hƣng Yên 
 2 
 3 
MỤC LỤC 
BÀI 1. BÀI 01: TỔNG QUAN VỀ PHP VÀ MYSQL .............................. 7 
1.1 Ngôn ngữ PHP và MySQL ...................................................................................... 7 
1.1.1 Ngôn ngữ lập mã ngồn mở ................................................................................................ 7 
1.1.2 Các đặc điểm PHP ............................................................................................................. 8 
1.1.3 Cơ bản về hệ quản trị CSDL mySQL ................................................................................. 8 
1.2 Cơ bản về cú pháp ngôn ngữ PHP.......................................................................... 8 
1.2.1 Thẻ (tag) trng PHP ............................................................................................................ 8 
1.2.2 Biến, hằng trng PHP .......................................................................................................... 9 
1.2.3 Tán tử trng PHP ...............................................................................................................10 
1.2.4 Lệnh chú thíc trng PHP ....................................................................................................12 
1.3 Cài đặt và cấu hình máy chủ Apache server ........................................................ 13 
BÀI 2. BÀI 02: CẤU TRÚC ĐIỀU KHIỂN TRNG PHP ....................... 15 
2.1 Cấu trúc rẽ nhánh ................................................................................................. 15 
2.1.1 Câu lệnh if else .................................................................................................................15 
2.1.2 Câu lênh swicth case ........................................................................................................16 
2.2 Cấu trúc lặp For .................................................................................................... 17 
2.2.1 Cấu trúc của for ................................................................................................................17 
2.2.2 Cấu trúc foreach ...............................................................................................................18 
2.3 Cấu trúc lặp While ................................................................................................ 18 
2.3.1 cấu trúc whie ....................................................................................................................18 
2.3.2 Cấu trúc do while .............................................................................................................19 
2.4 Lệnh ngắt trng PHP .............................................................................................. 20 
2.4.1 Lệnh Break .......................................................................................................................20 
2.4.2 Lệnh Cntinue ....................................................................................................................21 
BÀI 3. BÀI 03: LÀM VIỆC VỚI DỮ LIỆU FRM .................................. 22 
3.1 Thẻ PHP kết hợp với HTML ................................................................................ 22 
3.1.1 Thẻ PHP ...........................................................................................................................22 
3.1.2 Ví dụ về kết hợp PHP và HTML .......................................................................................22 
3.2 Nhận dữ liệu từ web .............................................................................................. 22 
3.2.1 Nhận dữ liệu he POST ......................................................................................................22 
3.2.2 Nhận dữ liệu the GET .......................................................................................................23 
3.3 Xuất dữ liệu về phía trình duyệt ........................................................................... 24 
3.3.1 Hàm Print .........................................................................................................................24 
 4 
3.3.2 Hàm Echo ........................................................................................................................ 25 
3.4 Nhúng trang PHP và trng trang PHP ...................................................................25 
3.4.1 Hàm Include và include_one ............................................................................................ 25 
3.4.2 Hàm Require và Require_one ........................................................................................... 25 
BÀI 4. LÀM VIỆC VỚI DỮ LIỆU MẢNG TRNG PHP ....................... 27 
4.1 Định nghĩa mảng trng PHP ...................................................................................27 
4.2 Khái niệm mảng kết hợp trng PHP.......................................................................27 
4.3 Thao tác các phần tử trong mảng .........................................................................27 
4.3.1 Đa mảng trong PHP ......................................................................................................... 30 
BÀI 5. LÀM VIỆC VỚI DỮ LIỆU KIỂU XÂU CHUỖI ....................... 32 
5.1 Chuỗi trng PHP .....................................................................................................32 
5.2 các tán tử tha tác chuỗi ..........................................................................................32 
5.3 Hàm tha tác chuỗi ..................................................................................................32 
BÀI 6. LÀM VIỆC VỚI FILE TỆP VÀ UPLAD FILE ......................... 36 
6.1 Đƣờng dẫn trng PHP .............................................................................................36 
6.1.1 Cấu trúc đường dẫn .......................................................................................................... 36 
6.1.2 Tha tác với các thư mục thông qua đường dẫn .................................................................. 36 
6.2 Thao tác với File tệp ..............................................................................................37 
6.2.1 Các hàm tha tác với File tệp ............................................................................................. 37 
6.2.2 Đọc file ............................................................................................................................ 38 
6.2.3 Ghi file............................................................................................................................. 39 
6.3 Uplad File trng PHP ..............................................................................................40 
6.3.1 Hàm Uplad file tệp ........................................................................................................... 40 
6.3.2 Xây dựng ứng dụng Uplad file tệp .................................................................................... 40 
BÀI 7. LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG .......................................... 43 
7.1 Khái niệm về hàm và cách khai báo......................................................................43 
7.1.1 Khái niệm về hàm và sử dụng lại mã ................................................................................ 43 
7.1.2 Cách khai báo hàm trng PHP ............................................................................................ 43 
7.1.3 Hàm tự định nghĩa với giá trị trả về .................................................................................. 43 
7.1.4 Gọi lại hàm trng PHP ....................................................................................................... 44 
7.2 Lập tình hƣớng đối tƣợng trng PHP .....................................................................44 
7.3 Khai bá đối tƣợng và cách xây dựng .....................................................................45 
7.3.1 Cấu trúc đối tượng ........................................................................................................... 45 
7.3.2 Các thành phần của đối tượng........................................................................................... 46 
 5 
7.3.3 Một số từ khóa trng lập trình hướng đối trượng .................................................................47 
7.3.4 Xây dựng lớp ...................................................................................................................48 
BÀI 8. LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG 02 ..................................... 51 
8.1 Sử dụng đối tƣợng trng PHP ................................................................................ 51 
8.1.1 Từ khóa New, this ............................................................................................................51 
8.1.2 Tán tử tha tác thành phần “->” ..........................................................................................51 
8.1.3 Sử dụng các thuộc tính và hàm .........................................................................................51 
8.2 Kế thừa trng PHP ................................................................................................. 53 
8.3 Lớp interface ......................................................................................................... 53 
8.4 Hàm abstract ......................................................................................................... 54 
BÀI 9. LẬP TRÌNH CƠ SỞ DỮ LIỆU VỚI MYSQL ............................ 56 
9.1 Giới thiệu về hệ quản trị CSDL MySQL .............................................................. 56 
9.2 Các lệnh cơ bản trên MySQL ............................................................................... 57 
9.3 Kết nối cơ sở dữ liệu MySQL từ PHP .................................................................. 58 
9.4 Đọc dữ liệu từ MySQL .......................................................................................... 59 
BÀI 10. LẬP TRÌNH CƠ SỞ DỮ LIỆU VỚI MYSQL 2 ....................... 62 
10.1 Ghi dữ liệu và CSDL mySQL ............................................................................. 62 
10.2 Cập nhật dữ liệu .................................................................................................. 62 
10.3 Xóa dữ liệu .......................................................................................................... 63 
10.4 Một số phƣơng pháp kết nối CSDL .................................................................... 63 
BÀI 11. BIẾN ĐỐI TƢỢNG TRNG PHP ............................................... 68 
11.1 Giới thiệu về các biến phía server....................................................................... 68 
11.2 Làm việc với Server ............................................................................................ 69 
11.3 Làm việc Sessin ................................................................................................... 70 
11.4 Làm việc Cookie .................................................................................................. 72 
BÀI 12. TỔNG QUAN VỀ LẬP TRÌNH CDEIGNITER ...................... 75 
12.1 Giới thiệu về Cdeigniter ...................................................................................... 75 
12.2 Đặc điểm của CodeIgniter .................................................................................. 75 
12.3 Cài đặt CodeIgniter............................................................................................. 75 
12.4 Cấu trúc một mdule trong CodeIgniter ............................................................. 76 
12.5 Viết ứng dụng đầu tiên ........................................................................................ 78 
12.6 Thực hiện kết nối CSDL ..................................................................................... 78 
 6 
BÀI 1. TL 1 VIẾT ỨNG DỤNG CƠ BẢN TRÊN PHP ......................... 82 
BÀI 2. TL 2 BÀI TÁN TÌM KIẾM TRÊN XÂU .................................... 83 
BÀI 3. TL 3 VIẾT WEBSITE THE MÔ HÌNH HƢỚNG ĐỐI TƢỢNG
 84 
BÀI 4. TL 4 SỬ DỤNG CƠ SỞ DỮ LIỆU THIẾT KẾ WEBSITE ....... 85 
BÀI 5. TL 5 XÂY DỰNG GIỎ HÀNG TRÊN PHP ............................... 86 
BÀI 1. TH 01 CÁC PHÉP TÁN CƠ BẢN .............................................. 87 
BÀI 2. TH 02. THA TÁC VỚI MẢNG VÀ XÂU .................................. 91 
BÀI 3. TH 03 LÀM VIỆC VỚI DỮ LIỆU TỆP ..................................... 96 
BÀI 4. TH 04 LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG ............................ 102 
BÀI 5. TH 05: LẬP TRÌNH CƠ SỞ DỮ LIỆU .................................... 111 
BÀI 6. TH 06: LẬP TRÌNH CƠ SỞ DỮ LIỆU .................................... 115 
BÀI 7. TH 07. SỬ DỤNG BIẾN ĐỐI TƢỢNG TRONG PHP ............ 121 
BÀI 8. TH 08. CÀI ĐẶT KHAI THÁC CODEIGNITER................... 126 
 7 
PHẦN LÝ THUYẾT 
Bài 1. Tổng quan về PHP và MySQL 
1.1 Ngôn ngữ PHP và MySQL 
PHP Hypertext Preprcessr (PHP) là một ngôn ngữ lập trình ch phép các lập trình viên web 
tạ các nội dung động mà tương tác với Database. Về cơ bản, PHP được sử dụng để phát 
triển các ứng dụng phần mềm trên web. 
PHP khởi đầu như là một dự án mã nguồn mở nhỏ, nhưng the đà phát triển, ngày càng 
nhiều người thấy rằng nó càng ngày càng hữu ích. PHP được phát triển từ một sản phẩm 
có tên là PHP/FI. PHP/FI d Rasmus Lerdrf tạ ra năm 1994, ban đầu được xem như là một 
tập cn đơn giản của các mã kịch bản Perl để the dõi tình hình truy cập đến bản sơ yếu lý 
lịch của ông trên mạng. Ông đã đặt tên ch bộ mã kịch bản này là "Persnal Hme Page Tls". 
Khi cần đến các chức năng rộng hơn, Rasmus đã viết ra một bộ thực thi bằng C lớn hơn để 
có thể truy vấn tới Database và giúp ch người sử dụng phát triển các ứng dụng web đơn 
giản. Rasmus đã quyết định công bố mã nguồn của PHP/FI ch mọi người xem, sử dụng 
cũng như sửa các lỗi có trng nó, đồng thời cải tiến mã nguồn. PHP đã phát triển rất nhanh 
chóng và trở thành ngôn ngữ lập trình web phổ biến nhất trên thế giới hiện nay. 
1.1.1 Ngôn ngữ lập mã ngồn mở 
Một số đặc điểm quan trọng của PHP: 
 PHP viết hồi qui của "PHP: Hypertext Preprcessr". 
 PHP là ngôn ngữ lập trình kịch bản viết ch máy chủ mà được nhúng trng 
HTML. Nó được sử dụng để quản lý nội dụng động, Database, Sessin tracking, 
 Nó được tích hợp với một số Database thông dụng như MySQL, PstgreSQL, 
racle, Sybase, Infrmix, và Micrsft SQL Server. 
 PHP thực thi rất tuyệt vời, đặc biệt khi được biên dịch như là một Apache 
Mdule trên Unix side. MySQL Server, khi được khởi động, thực thi các truy 
vấn phức tạp với các tập hợp kết quả khổng lồ trng thời gian Recrd-setting. 
 PHP hỗ trợ một số lượng rộng rãi các gia thức lớn như PP3, IMAP, và LDAP. 
PHP4 bổ sung sự hỗ trợ ch Java và các cấu trúc đối tượng phân phối (CM và 
CRBA). 
 Cú pháp PHP là giống C. 
 PHP thực hiện các hàm hệ thống, ví dụ: từ các file trên một hệ thống, nó có thể 
tạ, mở, đọc, ghi và đóng chúng. 
 PHP có thể xử lý các frm, ví dụ: thu thập dữ liệu từ file, lưu dữ liệu và một file, 
thông qua email bạn có thể gửi dữ liệu, trả về dữ liệu tới người dùng. 
 Bạn có thể thêm, xóa, sửa đổi các phần tử bên trng Database của bạn thông qua 
PHP. 
 Truy cập các biến Ckie và thiết lập Ckie. 
 Sử dụng PHP, bạn có thể hạn chế người dùng truy cập và một số trang trng 
Website của bạn. 
5 đặc trưng quan trọng làm PHP trở thành ngôn ngữ phổ biến: 
 Đơn giản hóa 
 Hiệu quả 
 Bả mật ca 
 Linh động 
 Thân thiện 
 8 
1.1.2 Các đặc điểm PHP 
MySQL là một RDBMS nhanh và dễ dàng để sử dụng. MySQL đang được sử dụng ch 
nhiều công việc kinh danh từ lớn tới nhỏ. MySQL được phát triển, được công bố, được hỗ 
trợ bởi MySQL AB, là một công ty của Thụy Điển. MySQL trở thành khá phổ biến vì 
nhiều lý d: 
 MySQL là mã ngồn mở. Vì thế, để sử dụng nó, bạn chẳng phải mất một xu nà. 
 MySQL là một chương trình rất mạnh mẽ. 
 MySQL sử dụng một Frm chuẩn của ngôn ngữ dữ liệu nổi tiếng là SQL. 
 MySQL làm việc trên nhiều Hệ điều hành và với nhiều ngôn ngữ như PHP, 
PERL, C, C++, Java,  
 MySQL làm việc nhanh và khỏe ngay cả với các tập dữ liệu lớn. 
 MySQL rất thân thiện với PHP, một ngôn ngữ rất đáng giá để tìm hiểu để phát 
triển Web. 
 MySQL hỗ trợ các cơ sở dữ liệu lớn, lên tới 50 triệu hàng hặc nhiều hơn nữa 
trng một bảng. Kích cỡ file mặc định được giới hạn ch một bảng là 4 GB, 
nhưng bạn có thể tăng kích cỡ này (nếu hệ điều hành của bạn có thể xử lý nó) 
để đạt tới giới hạn lý thuyết là 8 TB. 
MySQL là có thể điều chỉnh. Giấy phép GPL mã nguồn mở ch phép lập trình viên sửa đổi 
phần mềm MySQL để phù hợp với môi trường cụ thể của họ. 
1.1.3 Cơ bản về hệ quản trị CSDL mySQL 
MySQL là một RDBMS nhanh và dễ dàng để sử dụng. MySQL đang được sử dụng ch 
nhiều công việc kinh danh từ lớn tới nhỏ. MySQL được phát triển, được công bố, được hỗ 
trợ bởi MySQL AB, là một công ty của Thụy Điển. MySQL trở thành khá phổ biến vì 
nhiều lý d: 
 MySQL là mã ngồn mở. Vì thế, để sử dụng nó, bạn chẳng phải mất một xu nà. 
 MySQL là một chương trình rất mạnh mẽ. 
 MySQL sử dụng một Frm chuẩn của ngôn ngữ dữ liệu nổi tiếng là SQL. 
 MySQL làm việc trên nhiều Hệ điều hành và với nhiều ngôn ngữ như PHP, 
PERL, C, C++, Java,  
 MySQL làm việc nhanh và khỏe ngay cả với các tập dữ liệu lớn. 
 MySQL rất thân thiện với PHP, một ngôn ngữ rất đáng giá để tìm hiểu để phát 
triển Web. 
 MySQL hỗ trợ các cơ sở dữ liệu lớn, lên tới 50 triệu hàng hặc nhiều hơn nữa 
trng một bảng. Kích cỡ file mặc định được giới hạn ch một bảng là 4 GB, 
nhưng bạn có thể tăng kích cỡ này (nếu hệ điều hành của bạn có thể xử lý nó) 
để đạt tới giới hạn lý thuyết là 8 TB. 
MySQL là có thể điều chỉnh. Giấy phép GPL mã nguồn mở ch phép lập trình viên sửa đổi 
phần mềm MySQL để phù hợp với môi trường cụ thể của họ. 
1.2 Cơ bản về cú pháp ngôn ngữ PHP 
1.2.1 Thẻ (tag) trng PHP 
PHP Parser cần một cách để phân biệt PHP cde với các phần tử khác trng trang web. Kỹ 
thuật thực hiện điều này được biết với cái tên: "Escaping t PHP". Có 4 cách để làm điều 
này là: 
Thẻ PHP chính tắc 
Phng cách thẻ PHP hiệu quả và được sử dụng phổ biến nhất là: 
<?php 
//Cde php 
?> 
 9 
Đây là cách duy nhất để chắc chắn rằng các thẻ của php sẽ luôn luôn được thông dịch một 
cách chính xác. 
Thẻ mở ngắn gọn (SGML-style) 
Các thẻ này có dạng như sau: 
<? 
//Cde php 
?> 
Để sử dụng thẻ này bạn thực hiện 1 hặc 2 việc sau để kích hạt PHP để nhận ra các thẻ này: 
Chọn tùy chọn cấu hình --enable-shrt-tags khi bạn đang xây dựng PHP. 
Thiết lập cài đặt shrt_pen_tag trng tệp php.ini thành n. Tùy chọn này phải vô hiệu hóa để 
phân tích cú pháp XML với PHP, bởi vì cú pháp tương tự được sử dụng ch các thẻ XML. 
Thẻ ASP-style 
Thẻ ASP-style bắt chước các thẻ được sử dụng bởi Active Server Pages để phác họa các 
khối cde. Các thẻ ASP-style có dạng như sau: 
<% 
//Cde php 
%> 
Để sử dụng thẻ ASP-style, bạn sẽ cần thiết lập tùy chọn cấu hình trng tệp php.ini. 
Thẻ HTML script 
Thẻ script trng HTML có dạng như sau: 
//Cde php 
Hiển thị văn bản trên trình duyệt - Lệnh print và lệnh ech 
Trng PHP, bạn có thể sử dụng hai lệnh print và ech để in ra màn hình một chuỗi nà đó. Với 
các bạn mới học PHP thì hai lệnh này không khác nhau nhiều và bạn có thể sử dụng lệnh 
nà cũng được. 
Ví dụ: 
 Ví dụ chương trình PHP 
 <?php 
 ech "Ví dụ minh họa lệnh ech! "; 
 print "Ví dụ minh họa lệnh print!"; 
 ?> 
Kêt quả: 
1.2.2 Biến, hằng trng PHP 
PHP Parser cần một cách để phân biệt PHP cde với các phần tử khác trng trang web. Kỹ 
thuật thực hiện điều này được biết với cái tên: "Escaping t PHP". Có 4 cách để làm điều 
này là: 
Thẻ PHP chính tắc 
Phng cách thẻ PHP hiệu quả và được sử dụng phổ biến nhất là: 
 10 
<?php 
//Cde php 
?> 
Đây là cách duy nhất để chắc chắn rằng các thẻ của php sẽ luôn luôn được thông dịch một 
cách chính xác. 
Thẻ mở ngắn gọn (SGML-style) 
Các thẻ này có dạng như sau: 
<? 
//Cde php 
?> 
Để sử dụng thẻ này bạn thực hiện 1 hặc 2 việc sau để kích hạt PHP để nhận ra các thẻ này: 
Chọn tùy chọn cấu hình --enable-shrt-tags khi bạn đang xây dựng PHP. 
Thiết lập cài đặt shrt_pen_tag trng tệp php.ini thành n. Tùy chọn này phải vô hiệu hóa để 
phân tích cú pháp XML với PHP, bởi vì cú pháp tương tự được sử dụng ch các thẻ XML. 
Thẻ ASP-style 
Thẻ ASP-style bắt chước các thẻ được sử dụng bởi Active Server Pages để phác họa các 
khối cde. Các thẻ ASP-style có dạng như sau: 
<% 
//Cde php 
%> 
Để sử dụng thẻ ASP-style, bạn sẽ cần thiết lập tùy chọn cấu hình trng tệp php.ini. 
Thẻ HTML script 
Thẻ script trng HTML có dạng như sau: 
//Cde php 
Hiển thị văn bản trên trình duyệt - Lệnh print và lệnh ech 
Trng PHP, bạn có thể sử dụng hai lệnh print và ech để in ra màn hình một chuỗi nà đó. Với 
các bạn mới học PHP thì hai lệnh này không khác nhau nhiều và bạn có thể sử dụng lệnh 
nà cũng được. 
Ví dụ: 
 Ví dụ chương trình PHP 
 <?php 
 ech "Ví dụ minh họa lệnh ech! "; 
 print "Ví dụ minh họa lệnh print!"; 
 ?> 
Kêt quả: 
1.2.3 Tán tử trng PHP 
Tán tử là gì? Câu trả lời đơn giản từ biểu thức 4 + 5 là bằng 9. Ở đây, 4 và 5 được gọi là 
các tán hạng và + được gọi là tán tử. Ngôn ngữ PHP hỗ trợ các kiểu tán tử sau: 
 11 
 Tán tử số học 
 Tán tử s sánh 
 Tán tử lgic (hay tán tử quan hệ) 
 Tán tử gán 
 Tán tử điều kiện (hặc tán tử 3 ngôi) 
Tán tử số học trng PHP 
Bảng dưới liệt kê các tán tử số học được hỗ trợ bởi ngôn ngữ PHP: 
Giả sử biến A giữ giá trị 10, biến B giữ 20 thì: 
Ví dụ 
Tán tử Miêu tả Ví dụ 
+ Cộng hai tán hạng A + B kết quả là 30 
- Trừ tán hạng thứ hai từ tán hạng đầu A - B kết quả là -10 
* Nhân hai tán hạng A * B kết quả là 200 
/ Phép chia B / A kết quả là 2 
% Phép lấy số dư B % A kết quả là 0 
++ Tán tử tăng, tăng giá trị tán hạng thêm một 
đơn vị 
A++ kết quả là 11 
-- Tán tử giảm, giảm giá trị tán hạng đi một 
đơn vị 
A-- kết quả là 9 
Tán tử s sánh trng PHP 
Bảng dưới liệt kê các tán tử s sánh được hỗ trợ bởi ngôn ngữ PHP. Giả sử biến A giữ giá 
trị 10, biến B giữ giá trị 20, thì: 
Ví dụ 
Tán tử Miêu tả Ví dụ 
== Kiểm tra nếu 2 tán hạng bằng nhau hay không. Nếu 
bằng thì điều kiện là true. 
(A == B) là không true. 
!= Kiểm tra 2 tán hạng có giá trị khác nhau hay không. 
Nếu không bằng thì điều kiện là true. 
(A != B) là true. 
> Kiểm tra nếu tán hạng bên trái có giá trị lớn hơn tán 
hạng bên phải hay không. Nếu lớn hơn thì điều kiện là 
true. 
(A > B) là không true. 
< Kiểm tra nếu tán hạng bên trái nhỏ hơn tán hạng bên 
phải hay không. Nếu nhỏ hơn thì là true. 
(A < B) là true. 
>= Kiểm tra nếu tán hạng bên trái có giá trị lớn hơn hặc 
bằng giá trị của tán hạng bên phải hay không. Nếu đúng 
là true. 
(A >= B) là không true. 
<= Kiểm tra nếu tán hạng bên trái có giá trị nhỏ hơn hặc 
bằng tán hạng bên phải hay không. Nếu đúng là true. 
(A <= B) là true. 
Tán tử lgic trng PHP 
Bảng dưới đây chỉ rõ tất cả các tán tử lgic được hỗ trợ bởi ngôn ngữ PHP. Giả sử biến A 
có giá trị 10 và biến B có giá trị 20, thì: 
Tán tử Miêu tả Ví dụ 
and Được gọi là tán tử Lgic AND. Nếu cả hai tán hạng là 
true thì điều kiện trở thành true 
(A and B) là true. 
r Được gọi là tán tử Lgic R. Nếu một trng hai tán hạng là (A r B) là true. 
 12 
Ví dụ 
Tán tử gán trng PHP 
Dưới đây là những tán tử gán được hỗ trợ bởi ngôn ngữ PHP: 
Ví dụ 
Tán tử Miêu tả Ví dụ 
= Tán tử gán đơn giản. Gán giá trị tán hạng bên phải ch 
tán hạng trái 
C = A + B sẽ gán giá trị 
của A + B và trng C 
+= Thêm giá trị tán hạng phải tới tán hạng trái và gán giá 
trị đó ch tán hạng trái 
C += A là tương đương 
với C = C + A 
-= Trừ đi giá trị tán hạng phải từ tán hạng trái và gán giá 
trị này ch tán hạng trái 
C -= A là tương đương 
với C = C - A 
*= Nhân giá trị tán hạng phải với tán hạng trái và gán giá 
trị này ch tán hạng trái 
C *= A là tương đương 
với C = C * A 
/= Chia tán hạng trái ch tán hạng phải và gán giá trị này ch 
tán hạng trái 
C /= A là tương đương 
với C = C / A 
%= Lấy phần dư của phép chia tán hạng trái ch tán hạng 
phải và gán ch tán hạng trái 
C %= A là tương đương 
với C = C % A 
Tán tử điều kiện trng PHP 
Có nhiều hơn một tán tử được gọi là tán tử điều kiện. Đầu tiên, nó ước lượng một biểu 
thức là true hặc false và sau đó thực thi một trng hai lệnh đã ch tùy thuộc và kết quả của 
việc ước lượng. Tán tử điều kiện có cú pháp như sau: 
Ví dụ 
Tán tử Miêu tả Ví dụ 
? : Biểu thức điều kiện Nếu điều kiện là true ? Thì giá trị X : 
Nếu không thì giá trị Y 
1.2.4 Lệnh chú thíc trng PHP 
Cmmet trng PHP 
Một cmment là 1 phần của chương trình chỉ có tác dụng ch người đọc cde và nó sẽ bị lược 
bỏ trước khi hiển thị kết quả chương trình. Có 2 kiểu cmment trng PHP: 
Cmment đơn dòng − Nói chung, chúng thường được sử dụng ch các giải thích ngắn gọn 
hặc các chú ý liên quan đến nội bộ cde. Dưới đây là ví dụ về cmment đơn dòng: 
<?php 
 # Đây là ví dụ của một cmment 
 # Ví dụ cmment thứ hai 
// Một ví dụ về cmment đơn dòng khác 
 print "Ví dụ minh họa cmment đơn dòng"; 
?> 
đúng thì điều kiện trở thành true 
&& Được gọi là tán tử Lgic AND. Nếu cả hai tán hạng là 
true thì điều kiện trở thành true 
(A && B) là true. 
|| Được gọi là tán tử Lgic R. Nếu một trng hai tán hạng là 
đúng thì điều kiện trở thành true 
(A || B) là true. 
! Được gọi là tán tử Lgic NT. Sử dụng để đả ngược trạng 
thái lgic của tán hạng. Nếu điều kiện là true thì tán tử 
Lgic NT sẽ ch kết quả là false 
!(A && B) là false. 
 13 
Cmment đa dòng − Được sử dụng để giải thích chi tiết khi cần thiết. Dạng cmment này 
khá giống trng C. Đây là ví dụ về cmment đa dòng. 
<?php 
 /* Ví dụ một cmment đa dòng: 
 Web: utehy.edu.vn 
 Mục đích: minh họa lại cmment viết trên nhiều dòng 
 Ngôn ngữ: PHP 
 */ 
print "Ví dụ minh họa cmment đơn dòng"; 
?> 
1.3 Cài đặt và cấu hình máy chủ Apache server 
Để cài đặt PHP, các bạn có thể cài đặt từng gói riêng lẻ (PHP, Apache, Mysql). Hặc sử 
dụng gói phần mềm tích hợp là : Appserv - Win - 2.5.8 (Tên phần mềm là Appserv, dành 
ch phiên bản windw, phiên bản 2.5.8). 
Bước 1: Bạn cài đặt bình thường bằng cách nhấp và file exe. 
Bước 2: Phần mềm sẽ ch bạn chọn cần cài những mdule nà. Hãy giữ nguyên tất cả như 
hình dưới và nhấn next. 
Bước 3: Trng gia diện dưới: 
Server Name: bạn nhập và: lcalhst 
 14 
Email: Bạn nhập và email của bạn: 
Prt: Mặc định là 80, tuy nhiên nếu máy bạn đã cài IIS thì có thể chỉnh thành 81 để chạy 
dịch vụ bên appserv. 
Nhấn next để qua trang kế tiếp. 
Bước 4: Trng gia diện bên dưới ta điền thông tin như sau: 
Enter rt passwrd: Bạn gõ và rt 
Re-enter rt passwrd: nhập lại 1 lần nữa rt 
Các cấu hình bên dưỡi giữ nguyên. 
Ở phần: Enable InnDB bạn đánh dấu và. Để MYSQL sử lý được các ứng dụng có bật chế 
độ InnDB. 
Nhấn next để hàn tất việc cài đặt. 
Sau khi cài đặt xng bạn gõ và trình duyệt :  
mà ra gia diện bên dưới, tức là bạn đã cài đặt thành công appserv. 
 15 
Bài 2. Cấu trúc điều khiển trng PHP 
2.1 Cấu trúc rẽ nhánh 
Là biểu thức dùng kiểm tra 1 sự kiện. Nếu chúng thỏa điều kiện đó thì sẽ thực thi một hành 
động. Ngược lại sẽ là một hành động khác. 
Các lệnh if, elseif else và switch trng được sử dụng để điều khiển luồng dựa trên các 
điều kiện khác nhau. 
Bạn có thể sử dụng các lệnh điều kiện trng cde của bạn để điều khiển luồng. PHP hỗ trợ 3 
lệnh điều khiển luồng sau: 
Lệnh if...else − Sử dụng lệnh này nếu bạn muốn thực thi một tập hợp cde khi một điều 
kiện là true và tập cde khác nếu điều kiện là không true. 
Lệnh elseif − Được sử dụng với lệnh ifelse để thực thi một tập hợp cde nếu một trng các 
điều kiện là true. 
Lệnh switch − Được sử dụng nếu bạn muốn lựa chọn một trng các khối cde để được thực 
thi. Lệnh switch được sử dụng để tránh sử dụng một khối ifelseifelse dài. 
2.1.1 Câu lệnh if else 
Nếu bạn muốn thực thi một đạn cde nếu một điều kiện là true và khối cde khác nếu một 
điều kiện là false, bạn sử dụng lệnh ifelse trng PHP. 
Cú pháp 
if (điều_kiện) 
 phần cde này được thực thi nếu điều kiện là true 
else 
 phần cde này được thực thi nếu điều kiện là false 
Ví dụ sau sẽ ch kết quả "Chúc cuối tuần vui vẻ!" nếu hôm nay là Friday. Nếu không, nó sẽ 
ch kết quả "Chúc một ngày vui vẻ!": 
<?php 
 $d=date("D"); 
 if ($d=="Fri") 
ech "Chúc cuối tuần vui vẻ!"; 
else 
 16 
ech "Chúc một ngày vui vẻ!"; 
 ?> 
Lệnh elseif trng PHP 
Nếu bạn muốn thực thi một khối cde nếu một trng các điều kiện là true, thì bạn nên sử 
dụng lệnh elseif trng PHP. 
Cú pháp 
if (điều_kiện_1) 
 phần cde này được thực thi nếu điều kiện 1 là true; 
elseif (điều_kiện_2) 
 phần cde này được thực thi nếu điều kiện 2 là true; 
else 
 phần cde này được thực thi nếu các điều kiện là false; 
Ví dụ 
Ví dụ sau sẽ ch kết quả "Chúc cuối tuần vui vẻ!" nếu hôm nay là Friday, và "Chủ nhật vui 
vẻ!" nếu hôm nay là Sunday. Nếu không, nó sẽ ch kết quả "Chúc một ngày vui vẻ!"trng 
Thư viện C: 
<?php 
 $d=date("D"); 
if ($d=="Fri") 
ech "Chúc cuối tuần vui vẻ!"; 
elseif ($d=="Sun") 
ech "Chủ nhật vui vẻ!"; 
else 
ech "Chúc một ngày vui vẻ!"; 
 ?> 
2.1.2 Câu lênh swicth case 
Nếu muốn lựa chọn một trng nhiều khối cde để được thực thi, bạn nên sử dụng lệnh switch 
trng PHP. Lệnh switch được sử dụng để tránh các khối ifelseifelse dài. 
Cú pháp 
switch (biểu_thức) 
{ 
 case nhãn_1: 
 phần cde này được thực thi nếu biểu_thức = nhãn_1 
 break; 
case nhãn_2: 
 phần cde này được thực thi nếu biểu_thức = nhãn_2 
 break; 
 ... 
 default: 
 phần cde này được thực thi nếu 
 biểu_thức là khác với nhãn_1, nhãn_2, ... 
} 
Ví dụ 
Cơ chế làm việc của lệnh switch là: Đầu tiên, nó ước lượng biểu thức đã ch, sau đó tìm 
một nhãn để s khớp với giá trị kết quả đã ước lượng. Nếu tìm thấy một s khớp, thì cde 
được liên kết với nhãn sẽ được thực thi hặc nếu không có nhãn khớp với kết quả đó, thì 
lệnh sẽ thực thi bất kỳ khối cde mặc định đã ch nà. 
 17 
 <?php 
 $d=date("D"); 
 switch ($d) 
 { 
case "Mn": 
 ech "Hôm nay là Thứ Hai"; 
 break; 
case "Tue": 
 ech "Hôm nay là Thứ Ba"; 
 break; 
case "Wed": 
 ech "Hôm nay là Thứ Tư"; 
 break; 
case "Thu": 
 ech "Hôm nay là Thứ Năm"; 
 break; 
case "Fri": 
 ech "Hôm nay là Thứ Sáu"; 
 break; 
case "Sat": 
 ech "Hôm nay là Thứ Bảy"; 
 break; 
case "Sun": 
 ech "Hôm nay là Chủ Nhật"; 
 break; 
default: 
 ech "Còn ngày này là thứ mấy ???"; 
 } 
?> 
2.2 Cấu trúc lặp For 
2.2.1 Cấu trúc của for 
Lệnh for được sử dụng khi bạn biết trước bao nhiêu lần bạn muốn thực thi một lệnh hoặc 
một khối lệnh trong PHP. 
Cú pháp 
 18 
for (khởi_tạo; điều_kiện; tăng_giảm_giá_trị) 
{ 
 phần code để thực thi 
} 
khởi_tạo: được sử dụng để thiết lập giá trị bắt đầu cho biến đếm số lần lặp. Một biến có thể 
được khai báo ở đây cho mục đích này và tên truyền thống của nó là $i. 
Ví dụ 
Ví dụ sau tạo 5 lần lặp và thay đổi giá trị đã gán của hai biến qua mỗi lần lặp. 
<?php 
 $a = 0; 
 $b = 0; 
for( $i=0; $i<5; $i++ ) 
 { 
 $a += 10; 
 $b += 5; 
 } 
echo ("Sau vòng lặp, giá trị a=$a và b=$b" ); 
 ?> 
2.2.2 Cấu trúc foreach 
Lệnh vòng lặp foreach được sử dụng để lặp qua một mảng. Với mỗi lần lặp, giá trị cho 
phần tử mảng hiện tại được gán cho $value và con trỏ mảng được di chuyển tới phần tử kế 
tiếp và trong lần lặp tiếp theo thì phần tử kế tiếp sẽ được xử lý. 
Cú pháp 
foreach (Mảng as giá_trị) 
{ 
 phần code để thực thi 
} 
Ví dụ 
Bạn thử ví dụ sau để liệt kê các giá trị của một mảng. 
<?php 
 $array = array( 1, 2, 3, 4, 5); 
 foreach( $array as $value ) 
 { 
 echo "Giá trị phần tử mảng là $value "; 
 } 
 ?> 
2.3 Cấu trúc lặp While 
2.3.1 cấu trúc whie 
Lệnh while trong PHP sẽ thực thi một khối code nếu và miễn là một điều kiện đã xác định 
là true. 
Nếu điều kiện đã cho là true, thì khối code sẽ được thực thi. Sau khi code được thực thi, thì 
biểu thức điều kiện sẽ được ước lượng một lần nữa, và vòng lặp tiếp tục thực thi tới khi 
biểu thức điều kiện là false. 
 19 
Cú pháp 
while (điều_kiện) 
{ 
 phần code được thực thi nếu điều kiện là true 
} 
Ví dụ 
Ví dụ sau giảm giá trị một biến qua mỗi lần lặp và tăng giá trị biến đếm tới khi nó đạt đến 
10, thì sự ước lượng là false và vòng lặp kết thúc. 
<?php 
 $i = 0; 
 $num = 30; 
 while( $i < 10) 
 { 
 $num--; 
 $i++; 
 } 
 echo ("Vòng lặp dừng tại giá trị i = $i và num = $num" ); 
 ?> 
2.3.2 Cấu trúc do while 
Lệnh dowhile sẽ thực thi một khối code ít nhất một lần. Sau đó nó sẽ lặp lại vòng lặp 
miễn là điều kiện là true. 
Cú pháp 
do 
{ 
 phần code để thực thi 
} 
while (điều_kiện); 
Ví dụ 
Ví dụ sau sẽ lượng gia giá trị của i ít nhất một lần, và sau đó nó sẽ tiếp tục tăng biến i miễn 
là nó có giá trị nhỏ hơn 10. 
 20 
 <?php 
 $i = 0; 
 do{ 
 $i++; 
 } 
 while( $i < 10 ); 
 echo ("Vòng lặp dừng tại giá trị i = $i" ); 
 ?> 
2.4 Lệnh ngắt trng PHP 
2.4.1 Lệnh Break 
Từ khóa break trong PHP được sử dụng để kết thúc sự thực thi của một vòng lặp một cách 
đột ngột. 
Lệnh break được đặt bên trong khối lệnh. Nó trao bạn toàn quyền điều khiển bất cứ khi 
nào bạn muốn thoát khỏi vòng lặp. Sau khi ra khỏi vòng lặp, lệnh ngay sau vòng lặp đó sẽ 
được thực thi. 
Ví dụ sau kiểm tra điều kiện true khi giá trị biến đếm = 3 và vòng lặp kết thúc. 
 <?php 
 $i = 0; 
 while( $i < 10) 
 { 
 $i++; 
 if( $i == 3 )break; 
 } 
 echo ("Vòng lặp dừng tại giá trị i = $i" ); 
 ?> 
 21 
2.4.2 Lệnh Cntinue 
Từ khóa continue trong PHP được sử dụng để dừng vòng lặp hiện tại nhưng không kết 
thúc vòng lặp đó. 
Giống lệnh break, lệnh continue được đặt bên trong khối lệnh đang chứa code mà vòng lặp 
đó thực thi, được đặt trước bởi một biểu thức kiểm tra điều kiện. Khi gặp lệnh continue, 
phần còn lại của vòng lặp bị bỏ qua và tiếp tục vòng lặp tiếp theo. 
Vòng lặp sau in ra giá trị của một mảng, nếu thỏa mãn điều kiện thì in ra, ngược lại thì bỏ 
qua và tiếp tục vòng lặp. 
 <?php 
 $array = array( 1, 2, 3, 4, 5); 
 foreach( $array as $value ) 
 { 
 if( $value == 3 )continue; 
 echo "Gia tri cua phan tu mang la $value "; 
 } 
 ?> 
 22 
Bài 3. Làm việc với dữ liệu Frm 
3.1 Thẻ PHP kết hợp với HTML 
3.1.1 Thẻ PHP 
 Trong trang web có sử dụng HTML và PHP. Để chạy được mã code php trong trang web 
thì phần mở rộng của website phải là *.php. 
Nội dung của phần lập trình PHP được đặt trong cặp từ khóa: 
<?php 
//Code php 
?> 
Việc xây dựng website dựa trên PHP là phương pháp biến đổi mã nguồn php ra dạng hiển 
thị HTML thông qua trình biên dịch. 
3.1.2 Ví dụ về kết hợp PHP và HTML 
Ket hop PHP và HTML 
<?php 
echo ‘xin chao cac ban’; 
?> 
3.2 Nhận dữ liệu từ web 
3.2.1 Nhận dữ liệu he POST 
Phương thức POST có tính bảo mật hơn vì dữ liệu gửi phải thông qua một form HTML 
nên nó bị ẩn, nghĩa là chúng ta không thể thấy các giá trị đó được. 
Client Gửi Lên 
Với phương thức GET thì dữ liệu được thấy trên URL thì phương thức POST thì hoàn toàn 
ngược lại, POST sẽ gửi dữ liệu qua một cái form HTML và các giá trị sẽ được định nghĩa 
trong các input gồm các kiểu (textbox, radio, checkbox, password, textarea, hidden) và 
được nhận dang thông qua tên (name) của các input đó. 
Server nhận dữ liệu 
Tất cả các dữ liệu gửi bằng phương thức POST đều được lưu trong một biến toàn cục 
$_POST do PHP tự tạo ra, vì thế để lấy dữ liệu thì bạn chỉ cần lấy trong biến này là được. 
Cũng như lưu ý với các bạn là trước khi lấy phải dùng hàm isset($bien) để kiểm tra có hay 
không nhé. 
if (isset($_POST['id'])){ 
 $id = $_POST['id']; 
} 
Ví dụ 
Bước 1: Bạn tạo một file post.php nằm trong thư mục WWW của Vertrigo Server hoặc thư 
mục htdocs của Xampp, sau đó nhập đoạn code tạo form này vào: 
 23 
 Username: 
 password: 
Bước 2: Bạn mở trình duyệt gõ đường dẫn localhost/post.php và ngắm nghía cái form 
mình vừa tạo ra nhé. 
Bước 3: Bạn sửa lại đoạn mã HTML đó bằng cách thêm vào một đoạn mã PHP như sau: 
 Username: 
 password: 
 <?php 
 // Nếu người dùng click vào button Gửi Dữ Liệu 
 // Vì button đó tên là form_click nên đó cũng là 
 // tên của key nằm trong biến $_POST 
 if (isset($_POST['form_click'])){ 
 echo 'Tên đăng nhập là: ' . $_POST['username']; 
 echo ''; 
 echo 'Mật khẩu là: ' . $_POST['password']; 
 } 
 ?> 
Bước 4: Chạy thử và kiểm tra kết quả. 
3.2.2 Nhận dữ liệu the GET 
Phương thức GET rất dễ nhận thấy đó là trên URL sẽ kèm theo dữ liệu mà chúng ta muốn 
gửi. 
Client gửi lên 
Phương thức GET là phương thức gửi dữ liệu thông qua đường dẫn URL nằm trên thanh 
địa chỉ của Browser. Server sẽ nhận đường dẫn đó và phân tích trả về kết quả cho bạn. 
Server sẽ phân tích tất cả những thông tin đằng sau dấu hỏi (?) chính là phần dữ liệu mà 
Client gửi lên. 
Ví dụ: Với URL freetuts.net?id=12 thì Server sẽ nhận được giá trị id = 12 
Để truyền nhiều dữ liệu lên Server ta dùng dấu & để phân cách giữa các cặp giá trị. Giả sử 
tôi muốn truyền id = 12 và title = „method_get‟ thì URL sẽ có dạng 
freetuts.net?id=12&title=method_get. Lưu ý với các bạn là vị trí các cặp giá trị không quan 
trọng, nghĩa là cặp title có thể nằm trước cặp id cũng được. 
Server nhận dữ liệu 
Tất cả các dữ liệu mà Client gửi lên bằng phương thức GET đều được lưu trong một biến 
toàn cục mà PHP tự tạo ra đó là biến $_GET, biến này là kiểu mảng kết hợp lưu trữ danh 
sách dữ liệu từ client gửi lên theo quy luật key => value. Ví du với URL 
freetuts.net?id=12&title=method_get thì dữ liệu sẽ được lưu trong biến $_GET dưới dạng: 
$_GET = array( 
 'id' => '12', 
 'title' => 'method_get'); 
 24 
Vì thế để lấy dữ liệu thì ta chỉ cần làm như sau: 
// Lấy ID 
$id = $_GET['id']; 
echo $id; // kết quả là 12 
// Lấy title 
$title = $_GET['title']; 
echo $title; // kết quả là method_get 
Ví dụ: 
Bạn hãy tạo một file get.php nằm trong thư mục WWW của Vertrigo Server hoặc thư mục 
htdocs của Xampp, sau đó bạn copy đoạn code này vào: 
echo 'Dữ Liệu Chúng Tôi Nhận Được Là '; 
foreach ($_GET as $key => $val) 
{ 
 echo '' . $key . ' => ' . $val . ''; 
} 
Sau đó bạn ra trình duyệt gõ đường dẫn sau: 
localhost/get.php?id=12&title=method_get 
Chạy và kiểm tra kết quả. 
Lƣu ý: 
Trước khi lấy một dữ liệu nào đó bạn phải kiểm tra tồn tại không không mới lấy nhé, vì 
nếu bạn không kiểm tra thì giả sử người dùng không truyền dữ liệu qua mà bạn lại nhận thì 
sẽ bị báo lỗi ngay. Để kiểm tra ta dùng hàm isset($tenbien) trong php. 
Ví dụ: 
if (isset($_GET['id'])){ 
 $id = $_GET['id']; 
} 
3.3 Xuất dữ liệu về phía trình duyệt 
3.3.1 Hàm Print 
print cũng là một language construct, và có thể sử dụng có dấu hoặc không dấu: print or 
print(). 
Display Strings 
Ví dụ dưới đây chỉ ra bằng cách nào hiển thị chuỗi khác nhau với lệnh print ( cho phép 
chuỗi chứa các thẻ HTML) 
Example 
<?php 
print "PHP is fun!"; 
print "Hello world!"; 
print "I'm about to learn PHP!"; 
?> 
Ví dụ dưới chỉ ra bằng cách nào hiển thị chuỗi và biến với lệnh print: 
<?php 
$txt1="Learn PHP"; 
$txt2="utehy.edu.vn"; 
$cars=array("Volvo","BMW","Toyota"); 
print $txt1; 
print ""; 
print "Study PHP at $txt2"; 
print "My car is a {$cars[0]}"; 
?> 
 25 
3.3.2 Hàm Echo 
 echo là một language construct từ này sẽ giữ nguyên không dịch, nó sẽ cho phép sử dụng 
có dấu hoặc không dấu ngoặc đơn: echo or echo(). 
Hiển thị xâu 
Ví dụ dưới đây sẽ cho thấy làm thế nào để hiển thị chuỗi khác nhau với lệnh echo (cho 
phép chuỗi chứa các thẻ HTML). 
<?php 
echo "PHP is fun!"; 
echo "Hello world!"; 
echo "I'm about to learn PHP!"; 
echo "This", " string", " was", " made", " with multiple parameters."; 
?> 
Hiển thị biến 
Ví dụ dưới đây chỉ ra bằng cách nào hiển thị chuỗi và biến với lệnh echo: 
<?php 
$txt1="Learn PHP"; 
$txt2="W3Schools.com"; 
$cars=array("Volvo","BMW","Toyota"); 
echo $txt1; 
echo ""; 
echo "Study PHP at $txt2"; 
echo "My car is a {$cars[0]}"; 
?> 
3.4 Nhúng trang PHP và trng trang PHP 
3.4.1 Hàm Include và include_one 
Hàm include() lấy tất cả text trong file đã chỉ định và sao chép chúng vào trong file có sử 
dụng hàm include. Nếu có bất kì vấn đề gì trong quá trình nạp file, thì hàm include() sinh 
ra một cảnh báo nhưng script vẫn tiếp tục thực thi. 
Giả sử bạn muốn tạo một menu chung cho Website. Khi đó tạo một file là menu.php trong 
htdocs với nội dung sau: 
Home - 
PHP - 
JAVA - 
HTML 
Giờ tạo một số trang tùy bạn và chèn file này để tạo header. Ví dụ, test.php có thể có nội 
dung sau. 
 Ví dụ minh họa cách include file trong PHP! 
3.4.2 Hàm Require và Require_one 
Hàm require() lấy tất cả text trong file đã chỉ định và sao chép chúng vào file có sử dụng 
hàm require. Nếu có bất kì vấn đề gì xảy ra trong quá trình nạp file thì hàm require() sinh 
ra một lỗi nghiêm trọng (Fatal Error) và ngăn chặn sự thực thi của script. 
Vì vậy không có sự khác nhau nào giữa require() và include() ngoài việc chúng xử lý các 
điều kiện lỗi. Chúng tôi khuyên khích bạn sử dụng hàm require() thay cho include(), bởi vì 
script không nên tiếp tục thực thi nếu các file bị mất hay sai tên. 
 26 
Bạn có thể sử dụng ví dụ trên với hàm require() và nó sẽ sinh ra cùng một kết quả. Nhưng 
nếu bạn thử làm theo 2 ví dụ sau, và nếu với một file không tồn tại, bạn sẽ nhận các kết 
quả khác nhau. 
 Ví dụ minh họa cách include file trong PHP! 
Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt 
và gõ địa chỉ  sẽ cho kết quả lỗi cảnh báo. 
Giờ hãy thử ví dụ trên với hàm require() trong PHP. 
 Ví dụ minh họa cách include file trong PHP! 
File thực thi lần này tạm dừng và không hiển thị gì. 
 27 
Bài 4. Làm việc với dữ liệu mảng trng PHP 
4.1 Định nghĩa mảng trng PHP 
Một mảng là một cấu trúc dữ liệu mà lưu giữ một hoặc nhiều kiểu giá trị giống nhau trong 
một giá trị đơn. Ví dụ, nếu bạn muốn lưu 100 số, thì thay vì định nghĩa 100 biến, nó là dễ 
dàng để định nghĩa một mảng có độ dài là 100. 
Có 3 loại mảng khác nhau và mỗi giá trị mảng được truy cập bởi sử dụng một ID, mà được 
gọi là chỉ mục mảng. 
Mảng số nguyên − Một mảng có chỉ mục ở dạng số. Giá trị được lưu trữ và truy cập tuyến 
tính. 
Mảng liên hợp − Một mảng với chỉ mục ở dạng chuỗi kí tự. Mảng này lưu trữ các giá trị 
phần tử bằng sự kết hợp với các giá trị key thay vì trong một trật tự chỉ mục tuyến tính 
nghiêm ngặt như mảng số nguyên. 
Mảng đa chiều − Một mảng chứa một hoặc nhiều mảng và các giá trị được truy cập bằng 
cách sử dụng nhiều chỉ mục. 
4.2 Khái niệm mảng kết hợp trng PHP 
Các mảng loại này có thể lưu trữ các số, các chuỗi và bất kỳ đối tượng nào, nhưng chỉ mục 
mảng thì vẫn được biểu diễn bởi các số. Theo mặc định, chỉ mục mảng bắt đầu từ 0. 
Ví dụ 
Mảng này có thể lưu trữ số, chuỗi và bất kì đối tượng nào, nhưng chỉ mục của chúng sẽ 
được biểu diễn ở dạng số. Theo mặc định chỉ mục mảng bắt đầu từ 0. 
Dưới đây là ví dụ minh họa cách tạo và truy cập mảng số nguyên trong PHP. 
Ở đây, chúng ta đã sử dụng hàm array() để tạo mảng. Hàm này được giải thích trong 
chương phụ: Hàm mảng trong PHP ở trên. 
 <?php 
 /* Phương thức thứ nhất để tạo mảng trong PHP. */ 
 $numbers = array( 1, 2, 3, 4, 5); 
 foreach( $numbers as $value ) 
 { 
 echo "Giá trị phần tử mảng là $value "; 
 } 
 /* Phương thức thứ hai để tạo mảng trong PHP. */ 
 $numbers[0] = "one"; 
 $numbers[1] = "two"; 
 $numbers[2] = "three"; 
 $numbers[3] = "four"; 
 $numbers[4] = "five"; 
 foreach( $numbers as $value ) 
 { 
 echo "Giá trị phần tử mảng là $value "; 
 } 
 ?> 
4.3 Thao tác các phần tử trong mảng 
array_change_key_case($array, $case) 
 28 
Chuyển tất cả các key trong mảng $array sang chữ hoa nếu $case = 1 và sang chữ thường 
nếu $case = 0. Ta có thể dùng hằng số CASE_UPPER thay cho số 1 và CASE_LOWER 
thay cho số 0. 
$array = array( 
 'chu_thuong' =--> 'Hello' 
); 
$array = array_change_key_case($array, CASE_UPPER); 
var_dump($array); 
// Kết quả là: 'CHU_THUONG' => 'Hello' 
array_combine($array_keys, $array_values) 
Trộn 2 mảng $array_keys và $array_values thành một mảng kết hợp với $array_keys là 
danh sách keys, $array_value là danh sách value tương ứng với key. Điều kiện là 2 mảng 
này phải bằng nhau. 
$array_keys = array('a', 'b', 'c'); 
$array_values = array('one', 'two', 'three'); 
print_r(array_combine($array_keys, $array_values)); 
/* kết quả: 
Array( 
[a] => one 
[b] => two 
1 => three; 
)*/; 
array_count_values ( $array ) 
Đếm số lần xuất hiện của các phần tử giống nhau trong mảng $array và trả về một mảng 
kết quả. 
$array = array(1, "hello", 1, "world", "hello"); 
print_r(array_count_values($array)); 
/* Kết quả: 
Array ( 
[1] => 2; 
[hello] => 2; 
[world] => 1 
)*/ 
array_push(&$array, $add_value1, $add_value2, $add_value) 
Thêm vào cuối mảng $array một hoặc nhiều phần tử với các giá trị tương ứng biến 
$add_value truyền vào. 
$stack = array("orange", "banana"); 
array_push($stack, "apple", "raspberry"); 
print_r($stack); 
/* Kết quả 
Array 
( 
 [0] => orange 
 [1] => banana 
 [2] => apple 
 [3] => raspberry 
) 
*/ 
array_pop(&$array) 
Xóa trong mảng $array phần tử cuối cùng và trả về phần tử đã xóa. 
$stack = array("orange", "banana", "apple", "raspberry"); 
$fruit = array_pop($stack); 
print_r($stack); 
/* Biến $stack sẽ còn 3 giá trị 
 29 
Array ( 
 [0] => orange 
 [1] => banana 
 [2] => apple 
) 
Còn biến $fruit sẽ có giá trị là raspberry 
*/ 
array_pad($array, $size, $value) 
Kéo dãn mảng $array với kích thước là $size, và nếu kích thước truyền vào lớn hơn 
kích thước mảng $array thì giá trị $value được thêm vào, ngược lại nếu kích thước truyền 
vào nhỏ hơn kích thước mảng $array thì sẽ giữ nguyên. Nếu muốn giãn ở cuối mảng thì 
$size có giá trị dương, nếu muốn giãn ở đầu mảng thì $size có giá trị âm. 
$input = array(12, 10, 9); 
// Giãn thành 5 phần tử ở cuối mảng và 
// các phần tử giãn có giá trị là 5: 
$result = array_pad($input, 5, 0); 
// Kết quả là array(12, 10, 9, 0, 0) 
// Giản thành 7 phần tử ở đầu mảng 
// và các phần tử giãn có giá trị -1 
$result = array_pad($input, -7, -1); 
// Kết quả là array(-1, -1, -1, -1, 12, 10, 9) 
// Giãn thành 2 phần tử nhưng mảng $input 
// lại có 3 phần tử nên sẽ không được xử lý 
$result = array_pad($input, 2, "noop"); 
// Kết quả giữ nguyên array(12, 10, 9) 
array_shift(&$array) 
Xóa phần tử đầu tiên ra khỏi mảng $array và trả về phần tử vừa xóa đó. 
$stack = array("orange", "banana", "apple", "raspberry"); 
$fruit = array_shift($stack); 
print_r($stack); 
/* Kết quả biến $stack 
Array ( 
 [0] => banana 
 [1] => apple 
 [2] => raspberry 
) 
Kết quả biến $fruit là orange */ 
array_unshift(&$array, $value1, $value2, ) 
Thêm các giá trị $value1, $value2,  vào đầu mảng $array. 
$queue = array("orange", "banana"); 
array_unshift($queue, "apple", "raspberry"); 
print_r($queue); 
/*Kết quả là: 
* Array ( 
 [0] => apple 
 [1] => raspberry 
 [2] => orange 
 [3] => banana 
* ) */ 
is_array($variable). 
Kiểm tra một biến có phải kiểu mảng hay không, kết quả trả về true nếu phải và false nếu 
không phải. 
$bien1 = array(); 
$bien2 = ''; 
// Kết quả trả về true var_dump($bien1); 
 30 
// Kết quả trả về false var_dump($bien2); 
in_array($needle, $haystackarray) 
Kiểm tra giá trị $needle có nằm trong mảng $haystackarray không. trả về true nếu có và 
flase nếu không có. 
$haystackarray = array('hello', 'nobody', 'freetuts.net'); 
// Kết quả là true 
var_dump(in_array('freetuts.net', $haystackarray)); 
// Kết quả là false 
var_dump(in_array('net', $haystackarray)); 
array_key_exists($key, $searcharray) 
Kiểm tra key $key có tồn tại trong mảng $searcharray không, trả về true nếu có và false 
nếu không có. 
$searcharray = array( 
 'username' => 'thehalfheart', 
 'email' => '
[email protected]', 
 'website' => 'freetuts.net' 
); 
// Trả về true 
var_dump(array_key_exists('username', $searcharray)); 
// Trả về false 
var_dump(array_key_exists('otherkey', $searcharray)); 
array_unique( $array ) 
Loại bỏ giá trị trùng trong mảng $array. 
$array = array('freetuts.net', 'freetuts.net'); 
$result = array_unique($array); 
// Kết quả mảng chỉ còn 1 giá trị freetuts.net 
var_dump($result); 
array_values ($array ) 
Chuyển mảng $array sang dạng mảng chỉ mục. 
$array = array( 
 'username' => 'thehalfheart', 
 'password' => 'somepasss' 
); 
var_dump(array_values($array)); 
/* Kêt quả của mảng là array( 
 0 => thehalfheart, 
 1 => somepasss 
) */ 
4.3.1 Đa mảng trong PHP 
Các mảng liên hợp là khá giống với các mảng số nguyên về tính năng, nhưng chúng khác 
nhau về chỉ mục. Mảng liên hợp sẽ có chỉ mục ở dạng chuỗi để mà bạn có thể thiết lập một 
liên kết mạnh giữa key và value. 
Để lưu giữ lương của nhân viên trong một mảng, một mảng chỉ mục số sẽ không là lựa 
chọn tốt nhất. Thay vào đó, chúng ta sẽ sử dụng các tên nhân viên như là các key trong 
mảng liên hợp, và value sẽ là lương tương ứng của họ. 
Chú ý: Đừng giữ mảng liên hợp bên trong dấu trích dẫn kép trong khi in, nếu không thì nó 
sẽ không trả về bất kỳ giá trị nào. 
Ví dụ 
<?php 
 /* Phương thức thứ nhất để tạo mảng liên hợp. */ 
 $luong_nhan_vien = array("hoang" => 2000, "manh" => 1000, "huong" => 500); 
 echo "Lương của nhân viên hoang là ". $luong_nhan_vien['hoang'] . ""; 
 31 
 echo "Lương của nhân viên manh là ". $luong_nhan_vien['manh']. ""; 
 echo "Lương của nhân viên huong là ". $luong_nhan_vien['huong']. ""; 
/* Phương thức thứ hai để tạo mảng liên hợp. */ 
 $luong_nhan_vien['hoang'] = "high"; 
 $luong_nhan_vien['manh'] = "medium"; 
 $luong_nhan_vien['huong'] = "low"; 
 echo "Mức lương của nhân viên hoang là ". $luong_nhan_vien['hoang'] . ""; 
 echo "Mức lương của nhân viên manh là ". $luong_nhan_vien['manh']. ""; 
 echo "Mức lương của nhân viên huong là ". $luong_nhan_vien['huong']. ""; 
 ?> 
Mảng đa chiều trong PHP 
Trong một mảng đa chiều, mỗi phần tử cũng có thể là một mảng. Và mỗi phần tử trong 
một mảng phụ có thể là một mảng, và cứ tiếp tục như vậy. Các giá trị trong mảng đa dạng 
được truy cập bởi sử dụng nhiều chỉ mục. 
Ví dụ 
Trong ví dụ này, chúng ta tạo một mảng hai chiều để lưu giữ điểm 3 môn học của 3 sinh 
viên. 
Ví dụ này là một mảng đa chiều, bạn có thể tạo một mảng số nguyên theo cách tương tự. 
 <?php 
 $diemThi = array( 
 "hoang" => array 
 ( 
 "monVatLy" => 7, 
 "monToan" => 8, 
 "monHoa" => 9 
 ), 
 "manh" => array 
 ( 
 "monVatLy" => 7, 
 "monToan" => 9, 
 "monHoa" => 6 
 ), 
 "huong" => array 
 ( 
 "monVatLy" => 8, 
 "monToan" => 8, 
 "monHoa" => 9 
 ) 
 ); 
/* truy cập các giá trị của mảng đa chiều */ 
 echo "Điểm thi môn Vật Lý của hoang là: " ; 
 echo $diemThi['hoang']['monVatLy'] . ""; 
 echo "Điểm thi môn Toán của manh là: "; 
 echo $diemThi['manh']['monToan'] . ""; 
 echo "Điểm thi môn Hóa của huong là: " ; 
 echo $diemThi['huong']['monHoa'] . ""; 
 ?> 
 32 
Bài 5. Làm việc với dữ liệu kiểu xâu chuỗi 
5.1 Chuỗi trng PHP 
 Chuỗi là các dãy ký tự, giống như "Trường ĐH SPKT Hưng Yên". 
Ví dụ: 
$string_1 = "Vi du mot chuoi trong PHP"; 
$string_2 = "Hoc PHP co ban va nang cao tai VietJack"; 
$string_0 = ""; // ví dụ một chuỗi không có ký tự nào 
Khi sử dụng chuỗi với dấu nháy đơn, nó sẽ được đối xử như là các hằng, và in ra chính 
chuỗi đó. Trong khi sử dụng với dấu nháy kép, nó thay thế các biến với giá trị của chúng 
cũng như thông dịch các dãy ký tự cụ thể. 
<?php 
 $bien_chuoi = "name"; 
 $bien_chuoi_hang = 'Chuỗi $bien_chuoi sẽ không được in!\\n'; 
print($bien_chuoi_hang); 
 print ""; 
$bien_chuoi_hang = "Chuỗi $bien_chuoi sẽ được in!\\n"; 
print($bien_chuoi_hang); 
?> 
Không có giới hạn về độ dài của chuỗi, có thể dài tùy ý nếu bộ nhớ cho phép. 
Các chuỗi được giới hạn bởi các dấu nháy kép được PHP xử lý bằng 2 cách sau đây: 
 Các chuỗi kí tự bắt đầu với (\) được thay thế với một kí tự đặc biệt 
 Các biến (bắt đầu với $) được thay thế bằng biểu diễn chuỗi của giá trị của nó. 
Các quy tắc thay thế: 
 \n được thay thế bằng ký tự newline (dòng mới) 
 \r được thay thế bởi ký tự carriage-return, được hiểu là đưa con trỏ về đầu dòng 
nhưng không xuống dòng. 
 \t được thay thế bởi ký tự tab 
 \$ được thay thế bằng một dấu $ 
 \" được thay thế bằng một dấu nháy kép " 
 \\ được thay thế bằng một dấu nháy đơn \ 
5.2 các tán tử tha tác chuỗi 
Để nối hai chuỗi với nhau, bạn sử dụng toán tử “.” (dấu chấm) trong PHP như sau: 
<?php 
 $string1="VietJack"; 
 $string2=" Team"; 
 echo $string1 . " " . $string2; 
?> 
Nếu bạn chú ý vào đoạn code trên, bạn sẽ thấy rằng, chúng ta đã sử dụng toán tử nối chuỗi 
hai lần. Đây là bởi vì chúng ta đã chèn một chuỗi thứ ba. 
Giữa hai biến chuỗi, chúng ta thêm một chuỗi với một ký tự đơn, là một khoảng trống, để 
phân biệt hai biến. 
5.3 Hàm tha tác chuỗi 
Hàm strlen(string): được sử dụng để tính chiều dài của chuỗi 
Ví dụ: 
<?php 
echo strlen("Hello world!"); 
?> 
//kết quả in ra:12 
?> 
 33 
Hàm str_word_count(string $string [, int $format = 0 [, string $charlist ]]) : đếm tổng 
số từ có trong chuỗi 
string: chỉ định chuỗi để kiểm tra 
format: chỉ định kiểu giá trị trả về của hàm str_word_count(). Các giá trị này có thể là: 
0 - Mặc định - trả về số lượng từ đếm được 
1 - Trả về một mảng chứa các từ trong chuỗi 
2 - Trả về một mảng với key là vị trí của từ trong chuỗi và value là từ trong chuỗi 
charlist: chỉ định các ký tự đặc biệt sẽ được xem như một từ trong chuỗi 
Ví dụ: 
<?php 
print_r(str_word_count("Hello world!",1)); 
?> 
//kết quả in ra: Array ( [0] => Hello [1] => world ) 
?> 
Hàm strtoupper(string): đổi chữ thường thành hoa. 
Hàm strtolower(string): đổi chữ hoa thành thường. 
Hàm ucfirst(string): đổi chữ in ký tự đầu tiên của chuỗi. 
Hàm ucwords(string): đổi chữ in ký tự đầu tiên của mỗi từ trong chuỗi. 
Hàm trim($string, $character): Xóa ký tự $character nằm ở đầu và cuối chuỗi $str, nếu 
ta không nhập $character thì mặc định nó hiểu là xóa khoảng trắng. 
Hàm ltrim($string, $character): Tương tự như trim nhưng chỉ xóa bên trái 
Hàm rtrim($string, $character): Tương tự như trim nhưng chỉ xóa bên phải 
Hàm tìm kiếm và thay thế chuỗi 
Hàm substr( string $string , int $start [, int $length ] ): cắt ra một phần của chuỗi từ vị 
trí start một đoạn được chỉ định bằng tham số length 
string: chuỗi nhập vào đẻ cắt ra chuỗi con 
start: nếu start là một số dương, chuỗi được trả về sẽ bắt đầu từ vị trí start (ký tự đầu tiên 
của chuỗi được tính là 0). Nếu start là một số âm chuỗi con trả về sẽ được cắt từ vị trí start 
tính từ cuối chuỗi. 
length: độ dài của chuỗi trả về. Mặc định length được tính đến cuối chuỗi 
length>0: độ dài của chuỗi trả về được tính từ đầu chuỗi 
length<0: độ dài của chuỗi trả về được tính từ cuối chuỗi 
 Ví dụ: 
<?php 
// Positive numbers: 
echo substr("Hello world",10).""; 
echo substr("Hello world",1).""; 
echo substr("Hello world",3).""; 
echo substr("Hello world",7).""; 
echo ""; 
// Negative numbers: 
echo substr("Hello world",-1).""; 
echo substr("Hello world",-10).""; 
echo substr("Hello world",-8).""; 
echo substr("Hello world",-4).""; 
?> 
?> 
 Kết quả trả về: 
d 
ello world 
lo world 
orld 
d 
ello world 
lo world 
orld 
 34 
Hàm explode($delimiter, $string): chuyển một chuỗi string thành một mảng các phần tử 
với ký tự tách mảng là delimiter. 
Ví dụ: 
<?php 
$str = 'programming and digital marketing training'; 
// sử dụng dấu cách làm kí tự tách các phần từ từ chuỗi đưa vào mảng 
var_dump(explode(' ', $str)); 
 ?> 
/*Kết quả 
array 
 0 => 'programming', 
 1 => 'and', 
 2 => 'digital' , 
 3 => 'marketing', 
 4 => 'training' 
Hàm implode($delimiter, $piecesarray): ngược với hàm explode, nó chuyển một mảng 
$piecesarray thành chuỗi và mỗi phần tử trong mảng được nối với nhau bởi chuỗi 
$delimiter 
Ví dụ: 
<?php 
$array = array('province', 'district', 'town'); 
$comma_separated = implode(",", $array); 
echo $comma_separated; 
?> 
//kết quả in ra: 
//province,district,town 
Hàm strstr( $string, $needle): Tách một chuỗi bắt đầu từ $needle cho đến hết chuỗi. 
Ví dụ: 
<?php 
$website = 'hoclaptrinhweb.org'; 
$domain = strstr($website, '.'); 
echo $domain; // prints org 
?> 
Hàm strpos($string, $needle): Tìm vị trí của chuỗi $needle trong chuỗi $string, kết quả 
trả về vị trí đầu tiên của $needle nếu tìm thấy và false nếu không tìm thấy. 
Ví dụ: 
$mystring = 'abc'; 
$findme = 'b'; 
$pos = strpos($mystring, $findme); 
echo $pos; 
//kết quả: 1 
Tìm độ dài chuỗi trong PHP - Hàm strlen() trong PHP 
Hàm strlen() trong PHP được sử dụng để tìm độ dài của một chuỗi. 
Ví dụ sau sẽ tìm độ dài của chuỗi "VietJack Team!": 
<?php 
 echo strlen("VietJack Team!"); 
?> 
kết quả: 
 35 
Độ dài của một chuỗi thường được sử dụng trong vòng lặp hoặc các hàm khác, khi nó là 
quan trọng để biết khi nào chuỗi kết thúc (ví dụ: trong một vòng lặp, chúng ta muốn dừng 
vòng lặp sau ký tự cuối cùng của chuỗi). 
Tìm ký tự hoặc chuỗi trong chuỗi - Hàm strpos() trong PHP 
Hàm strops() được sử dụng để tìm một chuỗi hoặc ký tự bên trong một chuỗi. 
Nếu một so khớp được tìm thấy, hàm này sẽ trả về vị trí của so khớp đầu tiên. Nếu không 
tìm thấy một so khớp nào, nó sẽ trả về FALSE. 
Giờ chúng ta tìm chuỗi "eam" trong chuỗi "VietJack Team!": 
<?php 
 echo strpos("VietJack Team!","eam"); 
?> 
kết quả: 
Như bạn thấy, vị trí của chuỗi "eam" trong chuỗi trên là 10. Lý do là 10 mà không là 11, 
bởi vì vị trí đầu tiên của chuỗi là 0, chứ không phải là 1. 
 36 
Bài 6. Làm việc với File Tệp và uplad File 
6.1 Đƣờng dẫn trng PHP 
Khi làm việc với cấu trúc folder thì chúng ta có hai khái niệm đó là đường dẫn tương đối 
và đường dẫn tuyệt đối. Và trong lập trình web PHP cũng vậy, bạn sẽ phải hiểu rõ hai khía 
niệm này thì lỡ khi đi phỏng vấn người ta có hỏi thì biết đường trả lời nhé. 
6.1.1 Cấu trúc đƣờng dẫn 
Đường dẫn trong PHP được chia làm 2 phần: 
Đƣờng dẫn tƣơng đối: Đường dẫn tương đối là đường dẫn có điểm xuất phát từ thư mục 
hiện tại đang đứng. Ví dụ bạn đang ở folder public và bạn muốn trỏ tới một file tên là 
index.php nằm trong thư mục public thì lúc này đường dẫn chúng ta sẽ là /index.php. 
Để di chuyển lùi một folder trong đường dẫn tương đối thì ta sử dụng ký tự ../. Giả sử ta 
đang ở file cate.php nằm trong thư mục course. Bây giờ muốn truy xuất qua file post.php 
nằm trong thư mục blog thì lúc này đường dẫn tương đối sẽ là: 
1 ../blog/post.php 
Còn truy xuất file post.php nằm trong thư mục course sẽ cùng cấp nên đường dẫn lúc 
này là: 
1 /post.php 
Khi các bạn sử dụng PHP để đọc hay viết file thì phải sử dụng đường dẫn tương đối. 
Đƣờng dẫn tuyệt đối: Đường dẫn tuyệt đối là đường dẫn có đầu đủ cấu trúc của URL của 
một website. 
Ví dụ: Các đường dẫn tuyệt đối sau 
Tương tự với đường dẫn tương đối bạn muốn trở về một folder thì hãy sử dụng ký tự ../. 
Ví dụ:  sẽ tương đương với  
Thông thường khi chúng ta lấy nội dung từ một website khác thì sẽ sử dụng đường dẫn 
tuyệt đối bởi vì code PHP không có quyền truy cập trực tiếp một file ở Server khác. 
6.1.2 Tha tác với các thƣ mục thông qua đƣờng dẫn 
Thay đổi thƣ mục gốc 
Để thay đổi thư mục gốc, ta dùng hàm chroot 
Cú pháp: 
php buffer start bool chroot ( string directory) 
php buffer end 
Hàm này trả về true nếu như thư mục gốc được chuyển đổi thành thư mục có đường dẫn là 
directory. 
Thay đổi thƣ mục hiện hành 
Cú pháp: 
php buffer start bool chdir ( string directory) 
php buffer end 
Thay đổi thư mục hiện hành sang thư mục có đường dẫn là directory. Hàm trả về TRUE 
nếu thành công, ngược lại là FALSE. 
Trả về thƣ mục hiện hành 
Để lấy đường dẫn của thư mục hiện hành, ta dùng hàm getcwd: 
php buffer start string getcwd () 
 37 
php buffer end 
Hiển thị danh sách các tệp và thƣ mục con của một thƣ mục nào đó: 
Để làm điều này, ta dùng hàm scandir 
php buffer start <?php 
$dir = '/source'; 
$files1 = scandir($dir); 
print_r($files1); 
?> php buffer end 
Chú ý: đây chính là cách mà remview hoặc backdoor hay sử dụng để duyệt qua các tệp và 
thư mục trên máy chủ. 
Tạo một thƣ mục mới 
Để tạo một thư mục mới trên máy chủ, ta dùng hàm mkdir(): 
bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]]) 
php buffer start <?php 
mkdir("/uploads/images"); // tạo một thư mục images trong thư mục uploads ở thư mục gốc 
của website. 
?> php buffer end 
Xoá một thƣ mục 
Để xoá một thư mục mới trên máy chủ, ta dùng hàm rmdir(): 
bool rmdir (string pathname) 
php buffer start <?php 
rmdir("/uploads/images"); // Xoá thư mục images trong thư mục uploads ở thư mục gốc của 
website. 
?> 
6.2 Thao tác với File tệp 
6.2.1 Các hàm tha tác với File tệp 
Hàm fopen() của PHP được sử dụng để mở một file. Nó yêu cầu 2 tham số, tham số thứ 
nhất là tên file, và tham số thứ 2 là mode, tức là chế độ để hoạt động. 
Mode của file có thể được xác định như một trong 6 tùy chọn trong bảng sau. 
Mode Mục đích 
r Mở file và chỉ đọc. 
Di chuyển con trỏ file về đầu file 
r+ Mở file cho việc đọc và ghi. 
Di chuyển con trỏ về đầu file 
w Mở file và chỉ ghi. 
Di chuyển con trỏ về đầu file 
và cắt bỏ file về độ dài là 0. 
Nếu các file không tồn tại, nó sẽ cố gắng tạo ra một file. 
w+ Mở file cho việc đọc và ghi. 
Di chuyển con trỏ về đầu file 
và cắt bỏ file có độ dài là 0. 
Nếu các file không tồn tại, nó sẽ cố gắng tạo ra một file. 
a Mở file với mục đích chỉ ghi. 
Di chuyển con trỏ về cuối file 
Nếu các file không tồn tại, nó sẽ cố gắng tạo ra một file. 
a+ Mở file với mục đích đọc và ghi. 
Di chuyển con trỏ về cuối file 
Nếu các file không tồn tại, nó sẽ cố gắng tạo ra một file. 
Nếu cố gắng mở một file thất bại, khi đó hàm fopen trả về một giá trị false, nếu không thì 
nó sẽ trả về một con trỏ file được sử dụng cho việc tiếp tục đọc hoặc ghi file đó. 
 38 
Sau khi tạo một thay đổi cho file đã mở, việc quan trong bây giờ là đóng nó bởi sử dụng 
hàm fclose(). Hàm fclose() yêu cầu một con trỏ file như là một tham số của nó và sau đó 
trả về true nếu việc đóng thành công và false nếu ngược lại. 
6.2.2 Đọc file 
Khi một file được mở bằng cách sử dụng hàm fopen(), nó có thể được đọc với một hàm 
fread() trong PHP. Hàm này yêu cầu 2 tham số. Chúng phải là con trỏ file và độ dài của 
file tính bằng đơn vị byte. 
Độ dài của file có thể được biết bằng cách sử dụng hàm filesize() trong PHP, nó nhận tên 
file như một tham số và trả lại kích cỡ của file bằng đơn bị byte. 
Bạn theo các bước sau để đọc một file với PHP: 
 Mở file sử dụng hàm fopen(). 
 Lấy độ dài file sử dụng hàm filesize(). 
 Đọc nội dung file sử dụng hàm fread(). 
 Đóng file sử dụng hàm fclose(). 
Giả sử bạn có một tmp.txt có nội dung sau: 
Ví dụ dưới đây gán nội dung của một text file cho một biến, sau đó hiển thị nội dung của 
chúng trên trang web. 
 Đọc file trong PHP 
 <?php 
 $filename = "tmp.txt"; 
 $file = fopen( $filename, "r" ); 
 if( $file == false ) 
 { 
 echo ( "Xảy ra lỗi khi mở file!!!" ); 
 exit(); 
 } 
 $filesize = filesize( $filename ); 
 $filetext = fread( $file, $filesize ); 
 fclose( $file ); 
 echo ( "Kích cỡ của file là: $filesize byte " ); 
 echo ( "Dưới đây là nội dung của file: " ); 
 echo ( "$filetext" ); 
 ?> 
kết quả: 
 39 
6.2.3 Ghi file 
 Một file mới có thể được ghi hoặc text có thể được phụ thêm vào một file đang tồn tại 
bằng cách sử dụng hàm fwrite() trong PHP. Hàm này yêu cầu 2 tham số: con trỏ file và 
chuỗi dữ liệu để được ghi. Một tham số integer thứ 3 tùy ý có thể được thêm vào để xác 
định độ dài của dữ liệu sẽ ghi. Nếu tham số thứ 3 được thêm vào, việc ghi sẽ dừng lại sau 
khi đã được đạt tới độ dài đã xác định. 
Ví dụ sau tạo một text file mới, và ghi một đoạn text ngắn vào phần đầu của nó. Sau khi 
đóng file này, sự tồn tại của file này được xác nhận bởi hàm file_exist(), mà sẽ nhận tên 
file như một tham số. 
<?php 
 $filename = "tmp.txt"; 
 $file = fopen( $filename, "w" ); 
 if( $file == false ) 
 { 
 echo ( "Xảy ra lỗi khi mở file" ); 
 exit(); 
 } 
 fwrite( $file, "Ví dụ ghi file trong PHP.\n" ); 
 fclose( $file ); 
?> 
 Ghi file trong PHP 
 <?php 
 $filename = "tmp.txt"; 
 $file = fopen( $filename, "r" ); 
 if( $file == false ) 
 { 
 echo ( "Xảy ra lỗi khi mở file" ); 
 exit(); 
 } 
 $filesize = filesize( $filename ); 
 $filetext = fread( $file, $filesize ); 
 fclose( $file ); 
 echo ( "Kích cỡ của file là: $filesize byte " ); 
 echo("Tên file là: $filename "); 
 echo ( "Dưới đây là nội dung của file: " ); 
 echo ( "$filetext" ); 
 ?> 
 40 
6.3 Uplad File trng PHP 
Một PHP script có thể sử dụng với một HTML form cho phép người dùng upload file lên 
Server. Đầu tiên các file này được upload lên một thư mục tạm thời, sau đó được di chuyển 
tới một đích bởi một PHP script. 
Thông tin trong trang phpinfo.php mô tả thư mục tạm thời mà được sử dụng cho các file 
được upload ở dạng upload_tmp_dir và kích thước giới hạn của các file có thể được upload 
được bắt đầu ở dạng upload_max_filesize. Các tham số này được thiết lập trong file cấu 
hình php.ini. 
6.3.1 Hàm Uplad file tệp 
Khi bạn upload một file lên thì trên Server sẽ nhận được 5 thông số cho một file, và PHP 
sẽ dựa vào các thông số đó để tiến hành upload, các thông số đó là: 
name: Tên của file bạn upload 
type: Kiểu file mà bạn upload (hình ảnh, word, ) 
tmp_name: Đường dẫn đến file upload ở client 
error: Trạng thái của file bạn upload, 0 => không có lỗi 
size: Kích thước của file bạn upload 
Lệnh Upload file: 
move_uploaded_file($client_path, $server_path) 
$client_path: Là đường dẫn file trên máy trạm 
$server_path: Là đường dẫn file đến thư mục cần lưu trữ trên server 
6.3.2 Xây dựng ứng dụng Uplad file tệp 
Tiến trình upload một file theo các bước sau: 
 Người dùng mở trang chứa một HTML form là một text file, một nút browse và 
một nút submit. 
 Người dùng nhấn nút browse và chọn một file để upload từ máy local. 
 Đường dẫn đầy đủ đến file được chọn sẽ xuất hiện trong trường văn bản, sau đó 
người dùng nhấn nút Submit. 
 File được chọn được gửi đến thư mục tạm thời trên Server. 
 PHP script, mà được xác định như một Form Handler trong thuộc tính action 
của form, sẽ kiểm tra xem file đã đến chưa và sau đó sao chép file này sang thư 
mục mong muốn. 
 PHP script xác nhận thành công tới người dùng. 
Thông thường khi ghi các file, nó là cần thiết cho cả thư mục tạm thời và thư mục đích để 
có quyền truy cập được thiết lập là cho phép ghi. Nếu một trong 2 được thiết lập là read-
only, thì tiến trình sẽ thất bại. 
Một file được upload lên có thể là text file hoặc image file hoặc bất cứ tài liệu nào. 
Tạo upload form trong PHP 
Dưới đây là HTML code tạo một upload form. Form này có thuộc tính method được thiết 
lập là post và thuộc tính enctype thiết lập là multipart/form-data 
<?php 
 if(isset($_FILES['image'])){ 
 $errors= array(); 
 $file_name = $_FILES['image']['name']; 
 $file_size =$_FILES['image']['size']; 
 $file_tmp =$_FILES['image']['tmp_name']; 
 $file_type=$_FILES['image']['type']; 
 $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); 
 $expensions= array("jpeg","jpg","png"); 
 41 
 if(in_array($file_ext,$expensions)=== false){ 
 $errors[]="Không chấp nhận định dạng ảnh có đuôi này, mời bạn chọn JPEG hoặc PNG."; 
 } 
 if($file_size > 2097152){ 
 $errors[]='Kích cỡ file nên là 2 MB'; 
 } 
 if(empty($errors)==true){ 
 move_uploaded_file($file_tmp,"images/".$file_name); 
 echo "Thành công!!!"; 
 } 
 else{ 
 print_r($errors); 
 } 
 } 
?> 
kết quả: 
Tạo upload script trong PHP 
Có một biến PHP toàn cục là $_FILES. Biến này là một mảng mảng liên hợp và giữ tất cả 
thông tin liên quan đến file được tải lên. Vì vậy, nếu giá trị gán cho thuộc tính name của 
input trong form upload là file, khi đó PHP có thể tạo 5 biến sau: 
 $_FILES['file']['tmp_name']: File đã upload trong thư mục tạm thời trên Web 
Server. 
 $_FILES['file']['name']: Tên thực sự của file đã upload. 
 $_FILES['file']['size']: Kích thước tính theo byte của file đã upload. 
 $_FILES['file']['type']: Kiểu MIME của file đã upload. 
 $_FILES['file']['error']: Mã hóa lỗi liên quan đến file tải lên này. 
Ví dụ 
Dưới đây là ví dụ cho phép tải các hình ảnh và trả về kết quả ở dạng thông tin file đã được 
tải lên. 
<?php 
 if(isset($_FILES['image'])){ 
 $errors= array(); 
 $file_name = $_FILES['image']['name']; 
 $file_size =$_FILES['image']['size']; 
 $file_tmp =$_FILES['image']['tmp_name']; 
 $file_type=$_FILES['image']['type']; 
 $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); 
 $expensions= array("jpeg","jpg","png"); 
 if(in_array($file_ext,$expensions)=== false){ 
 42 
 $errors[]="Không chấp nhận định dạng ảnh có đuôi này, mời bạn chọn JPEG hoặc PNG."; 
 } 
 if($file_size > 2097152){ 
 $errors[]='Kích cỡ file nên là 2 MB'; 
 } 
 if(empty($errors)==true){ 
 move_uploaded_file($file_tmp,"images/".$file_name); 
 echo "Thành công!!!"; 
 } 
 else{ 
 print_r($errors); 
 } 
 } 
?> 
 Gửi file có tên: 
 Kích cỡ file : 
 Kiểu file : 
 43 
Bài 7. Lập trình hƣớng đối tƣợng 
7.1 Khái niệm về hàm và cách khai báo 
Để giảm thời gian lặp lại 1 thao tác code nhiều lần, PHP hỗ trợ người lập trình việc tự định 
nghĩa cho mình những hàm có khả năng lặp lại nhiều lần trong website. Việc này cũng 
giúp cho người lập trình kiểm soát mã nguồn một cách mạch lạc. Đồng thời có thể tùy biến 
ở mọi trang. Mà không cần phải khởi tạo hay viết lại mã lệnh như HTML thuần. 
7.1.1 Khái niệm về hàm và sử dụng lại mã 
Cú pháp: 
 function functiono_name(){ 
 //Lệnh thực thi 
} 
Tên hàm có thể là một tổ hợp bất kỳ những chứ cái, con số và dấu gạch dưới, nhưng phải 
bắt đầu từ chứ cái và dấu gạch dưới. 
Ví dụ: 
<?php 
 function demo123(){ 
 $name= array("Kenny", "Jiro", "Calvin", "Gillian"); 
 foreach ($name as $test){ 
 echo "$test"; 
 } 
 } 
 demo123(); 
?> 
7.1.2 Cách khai báo hàm trng PHP 
Cú pháp: 
function function_name($gt1,$gt2){ 
//Hành động 
} 
Ví dụ: 
<?php 
 function indulieu($text){ 
 echo "$text"; 
 } 
 indulieu("welcome"); 
 indulieu("who are you ?"); 
?> 
7.1.3 Hàm tự định nghĩa với giá trị trả về 
Cú pháp: 
function function_name(Có hoặc không có đối số){ 
//Thuc thi 
return giatri; 
} 
Ví dụ: 
<?php 
 function tinhtong($a,$b){ 
 $total=$a+$b; 
 return $total; 
 } 
 echo tinhtong(19,31); 
?> 
 44 
7.1.4 Gọi lại hàm trng PHP 
PHP cung cấp nhiều hàm cho phép triệu gọi lại file. Như hàm include("URL đến file"), 
require("URL Đến file"). 
Ngoài hai cú pháp trên còn có include_once(), require_once(). Hai hàm này cũng có trách 
nhiệm gọi lại hàm. Những chúng sẽ chỉ gọi lại duy nhất 1 lần mà thôi. 
Ví dụ: 
Tạo file top.html với nội dung: 
 QHOnline Layout 
 Banner 
 Home 
 News 
 Music 
 Download 
 Contact 
Tạo file body.html với nội dung: 
 Noi dung website 
Tạo file bottom.html với nội dung: 
 Copyright@ abc.com 
Tạo trang index.php với nội dung: 
<?php 
 include("top.html"); 
 include("body.html"); 
 include("bottom.html"); 
?> 
7.2 Lập tình hƣớng đối tƣợng trng PHP 
Trước khi đi vào chi tiết, chúng ta nhắc lại một số khái niệm liên quan tới Lập trình hướng 
đối tượng. 
Class − Đây là một kiểu dữ liệu được định nghĩa bởi lập trình viên, mà gồm các hàm cục 
bộ cũng như dữ liệu cục bộ. Bạn có thể nghĩ về một Class như là một Template để tạo 
nhiều instance (sự thể hiện) của cùng loại (hoặc lớp) của đối tượng. 
Object − Một instance (sự thể hiện) riêng biệt của cấu trúc dữ liệu được định nghĩa bởi một 
Class. Một khi bạn định nghĩa một Class, và sau đó tạo nhiều Object của Class đó. Các 
Object cũng còn được biết như là Instance. 
 45 
Biến thành viên − Đây là các biến được định nghĩa bên trong một Class. Dữ liệu này sẽ 
không nhìn thấy với ngoại vi lớp đó và có thể được truy cập thông qua các hàm thành viên. 
Những biến này được gọi là attribute của đối tượng một khi đối tượng đã được tạo. 
Hàm thành viên − Đây là hàm được định nghĩa bên trong một Class và được sử dụng để 
truy cập dữ liệu đối tượng. 
Tính kế thừa − Khi một lớp được định nghĩa bằng việc kế thừa hàm đang tồn tại của một 
lớp cha, thì nó được gọi là tính kế thừa. Ở đây, lớp con sẽ kế thừa tất cả hoặc một số hàm 
và biến thành viên của lớp cha. 
Lớp cha − Một lớp mà được kế thừa từ lớp khác. Nó cũng được gọi là một lớp cơ sở (base 
class) hoặc super class. 
Lớp con − Một lớp mà kế thừa từ lớp khác. Nó cũng được gọi là một lớp phụ hoặc một lớp 
kế thừa. 
Tính đa hình − Đây là một khái niệm hướng đối tượng mà cùng một hàm có thể được sử 
dụng cho các mục đích khác nhau. Ví dụ, tên hàm sẽ vẫn giống như vậy, nhưng nó nhận số 
tham số khác nhau và có thể thực hiện các tác vụ khác nhau. 
Nạp chồng (Overloading) − Một kiểu đa hình, trong đó một số hoặc tất cả toán tử có trình 
triển khai khác nhau phụ thuộc vào kiểu các tham số của chúng. Tương tự, các hàm cũng 
có thể được nạp chồng với trình triển khai khác nhau. 
Trừu tượng hóa dữ liệu − Bất kỳ biểu diễn dữ liệu nào mà trong đó chi tiết về trình triển 
khai bị ẩn. 
Tính bao đóng − Liên quan tới một khái niệm mà chúng ta có thể bao đóng tất cả dữ liệu 
và hàm thành viên với nhau để tạo thành một Object. 
Constructor − Liên quan tới một kiểu hàm đặc biệt mà sẽ được gọi tự động bất cứ khi nào 
có một sự tạo thành đối tượng từ một Class. 
Destructor − Liên quan tới một kiểu hàm đặc biệt mà sẽ được gọi tự động bất cứ khi nào 
một đối tượng bị xóa hoặc ra khỏi phạm vi. 
7.3 Khai bá đối tƣợng và cách xây dựng 
7.3.1 Cấu trúc đối tƣợng 
Cú pháp để tạo ra một class khá đơn giản: để khai báo một class ta sử dụng từ khóa class, 
theo sau từ khóa là tên của class và một cặp ngoặc nhọn ({ }): 
Sau tạo ra class, bạn có thể khởi tạo và lưu trữ chúng trong một biến bằng cách sử dụng từ 
khóa new: 
Để xem nội dung của class, bạn sử dụng hàm var_dump(): 
Hãy thử lại quá trình này bằng cách đặt toàn bộ các mã lệnh phía trên vào tập tin có tên là 
test.php và đặt nó vào trong locahost của bạn: 
Mở trình duyệt của bạn và chạy  , bạn sẽ nhìn thấy như sau: 
object(MyClass)#1 (0) { } 
Vậy là xong, bạn đã vừa hoàn thành script hướng đối tượng (OOP) đầu tiên của bạn dưới 
hình thức đơn giản nhất. 
Form chung để định nghĩa một lớp mới trong PHP như sau: 
<?php 
 class phpClass{ 
 var $var1; 
 var $var2 = "một giá trị hằng số"; 
 function myfunc ($arg1, $arg2) { 
 [..] 
 } 
 46 
 [..] 
 } 
?> 
Ý nghĩa: 
Thủ tục class đặc biệt, được theo sau bởi tên của lớp mà bạn muốn định nghĩa. 
Một tập hợp dấu ngoặc móc bao quanh bất kỳ số lượng khai báo biến hoặc định nghĩa hàm 
nào. 
Các khai báo biến bắt đầu với thủ tục đặc biệt var, được theo sau bởi một tên biến theo qui 
ước $; chúng cũng có thể có một phép gán khởi tạo tới một giá trị hằng số. 
Định nghĩa hàm ở đây khá giống với các hàm standalone trong PHP, nhưng đây là hàm cục 
bộ cho lớp và sẽ được sử dụng để thiết lập và truy cập dữ liệu đối tượng. 
Ví dụ 
Ví dụ sau định nghĩa một lớp tên là Books. 
Phần 1: 
<?php 
 class Books{ 
 /* các biến thành viên */ 
 var $price; 
 var $title; 
 /* các hàm thành viên */ 
 function setPrice($par){ 
 $this->price = $par; 
 } 
 function getPrice(){ 
 echo $this->price .""; 
 } 
 function setTitle($par){ 
 $this->title = $par; 
 } 
 function getTitle(){ 
 echo $this->title ." "; 
 } 
 } 
?> 
Biến $this là một biến đặc biệt và nó tham chiếu tới cùng đối tượng (ví dụ: chính nó). 
7.3.2 Các thành phần của đối tƣợng 
Hàm constructor trong PHP 
Hàm constructor là kiểu hàm đặc biệt mà sẽ được gọi tự động bất cứ khi nào có một sự tạo 
thành đối tượng từ một Class. Vì thế, chúng ta lợi dụng cách vận hành này, bằng việc khởi 
tạo nhiều thứ thông qua các hàm constructor trong PHP. 
PHP cung cấp một hàm đặc biệt được gọi là __construct() để định nghĩa một constructor. 
Bạn có thể truyền bao nhiêu tham số tùy bạn vào trong hàm constructor này. 
Ví dụ sau sẽ tạo một constructor cho lớp Books và nó sẽ khởi tạo price và title cho book tại 
thời điểm tạo đối tượng này. 
function __construct( $par1, $par2 ){ 
 $this->price = $par1; 
 $this->title = $par2; 
} 
Bây giờ, chúng ta không cần gọi tập hợp hàm riêng rẽ để thiết lập price và title. Chúng ta 
chỉ có thể khởi tạo hai biến thành viên của chúng tại thời điểm tạo đối tượng. Bạn kiểm tra 
ví dụ sau: 
$tiengAnh = new Books( "English Grammar in Use", 10 ); 
 47 
$toanCaoCap = new Books ( "Toán cao cấp 1", 15 ); 
$tuTuongHCM = new Books ("Tư tưởng Hồ Chí Minh", 7 ); 
/* lấy các giá trị đã được thiết lập */ 
$tiengAnh->getTitle(); 
$tuTuongHCM->getTitle(); 
$toanCaoCap->getTitle(); 
$tiengAnh->getPrice(); 
$tuTuongHCM->getPrice(); 
$toanCaoCap->getPrice(); 
kết quả: 
Destructor trong PHP 
Giống một hàm constructor trong PHP, bạn có thể định nghĩa một hàm destructor bởi sử 
dụng hàm __destruct(). Bạn có thể giải phóng tất cả nguồn với một destructor trong PHP. 
Các phƣơng thức, thuộc tính trong PHP 
Việc xây dựng các phương thức trong PHP có thể sử dụng các khái niệm về hàm và dùng 
lại mã ở trên để xây dựng. 
Mỗi hàm trong đối tượng sử dụng để thực hiện một nhiệm vụ nhất định và được sử dụng 
thông qua lời triệu gọi từ đối tượng. 
Thuộc tính trên PHP thường ít được sử dụng do khả năng biến tự khai báo trên PHP. 
7.3.3 Một số từ khóa trng lập trình hƣớng đối trƣợng 
Public 
Trừ khi bạn xác định, nếu không thì các thuộc tính (property) và phương thức của một lớp 
là public. Tức là, chúng có thể được truy cập trong 3 tình huống sau: 
 Từ bên ngoài lớp trong đó nó được khai báo. 
 Từ bên trong lớp trong đó nó được khai báo. 
 Từ bên trong lớp ngoài mà triển khai lớp đó trong đó nó được khai báo. 
Tới giờ, chúng ta đã thấy tất cả thành viên là các thành viên public. Nếu bạn muốn giới hạn 
truy cập của các thành viên của một lớp, thì bạn định nghĩa thành viên lớp là private hoặc 
protected trong PHP. 
Private 
Bằng việc chỉ định một thành viên là private, bạn giới hạn độ truy cập cho lớp trong đó nó 
được khai báo. Thành viên private không thể được tham chiếu từ các lớp mà kế thừa lớp 
trong đó nó được khai báo và không thể được truy cập từ bên ngoài lớp đó. 
Một thành viên lớp có thể được chỉ định là private bởi sử dụng từ khóa private ở trước 
thành viên đó. 
class MyClass { 
 private $car = "skoda"; 
 $driver = "SRK"; 
 function __construct($par) { 
 // các lệnh ở đây được thực thi mỗi khi 
 48 
 // một instance của class 
 // được tạo 
 } 
 function myPublicFunction() { 
 return("Đây là một hàm Public!"); 
 } 
 private function myPrivateFunction() { 
 return("Đây là một hàm Private!"); 
 } 
} 
Khi lớp MyClass được kế thừa bởi lớp khác bởi sử dụng extends, hàm myPublicFunction() 
sẽ là nhìn thấy, như $driver. Lớp kế thừa sẽ không nhận biết hoặc không truy cập tới hàm 
myPrivateFunction và $car, bởi vì chúng được khai báo là private. 
Protected 
Một thuộc tính hoặc phương thức protected là có thể truy cập trong lớp mà trong đó nó 
được khai báo, cũng như trong các lớp mà kế thừa từ lớp đó. Các thành viên protected là 
không có sẵn với ngoại vi của hai loại lớp này. Một thành viên lớp có thể được chỉ định là 
protected bởi sử dụng từ khóa protected ở trước thành viên đó trong PHP. 
Dưới đây là phiên bản khác của MyClass: 
class MyClass { 
 protected $car = "skoda"; 
 $driver = "SRK"; 
 function __construct($par) { 
 // các lệnh ở đây được thực thi mỗi khi 
 // một instance của class 
 // được tạo 
 } 
 function myPublicFunction() { 
 return("Đây là một hàm Public!"); 
 } 
 protected function myPrivateFunction() { 
 return("Đây là một hàm Protected!"); 
 } 
} 
7.3.4 Xây dựng lớp 
a) Khai bá thuộc tính 
Để thêm dữ liệu vào một class, người ta sử dụng thuộc tính, hoặc một biến riêng biệt nào 
đó. Chúng hoạt động tương tự như các biến thông thường, chỉ khác một điều là chúng đang 
liên kết với object và vì thế để có thể truy cập và sử dụng được chúng ta phải thông qua 
object hay nói cách khác là sử dụng object. 
Để thêm một thuộc tính vào MyClass, bạn thêm đoạn mã sau vào script của bạn: 
Từ khóa public xác định tầm vực của thuộc tính. Tiếp đó, tên của thuộc tính được đặt đúng 
theo chuẩn cú pháp đặt tên cho biến, và một giá trị đã được gán cho nó (mặc dù thuộc tính 
của class không nhất thiết phải có giá trị ban đầu). Tuy nhiên chúng ta sẽ tìm hiểu về 
chúng ở các phần sau. 
Để đọc thuộc tính này và xuất chúng ra trình duyệt, chúng ta sẽ phải tham chiếu chúng 
thông qua các object: 
Nếu chúng ta không khai báo object, chương trình sẽ không thể xác định được thuộc tính 
đó thuộc object nào (vì hiểu 1 cách đơn giản object là đại diện cho class). Sử dụng dấu mũi 
tên (->) là một cấu trúc của Hướng Đối Tượng, để một object có thể truy cập được nội 
dung của thuộc tính và phương thức trong class. 
 49 
Sửa lại mã lệnh file test.php như sau: 
Và bây giờ Reload lại trình duyệt của để được kết quả như sau: 
I'm a class property! 
b) Khai bá các hàm và xây dựng hàm 
Phương thức là các hàm riêng biệt của class. Các action riêng lẻ, mà một object sẽ thực thi, 
thì được định nghĩa bên trong class như là các phương thức. 
Ví dụ, để tạo ra các phương thức có khả năng thiết lập và trả về giá trị của thuộc 
tính$prop1, ta thêm đoạn mã như sau: 
<?php 
class MyClass 
{ 
 public $prop1 = "I'm a class property!"; 
 public function setProperty($newval) 
 { 
 $this->prop1 = $newval; 
 } 
 public function getProperty() 
 { 
 return $this->prop1 . ""; 
 } 
} 
$obj = new MyClass; 
echo $obj->prop1; 
?> 
c) Hàm Contructor 
Khi một object được khởi tạo, nó thường kèm theo nhu cầu thiết lập một vài thứ ngoài lề. 
Để xử lý điều này, PHP cung cấp phương thức magic__construct(), phương thức này sẽ tự 
động được gọi ngay khi một object mới được khởi tạo. 
Để minh họa cho khái niệm constructor, chúng ta sẽ thêm một hàm dựng (constructor) 
vàoMyclasscó nhiệm vụ xuất ra một thông tin bất kỳ (do chúng ta thiết lập) ngay khi có 
một object thể hiện của class được khởi tạo. 
<?php 
class MyClass 
{ 
 public $prop1 = "I'm a class property!"; 
 public function __construct() 
 { 
 echo 'The class "', __CLASS__, '" was initiated!'; 
 } 
 public function setProperty($newval) 
 { 
 $this->prop1 = $newval; 
 } 
 public function getProperty() 
 { 
 return $this->prop1 . ""; 
 } 
} 
// Tạo object 
$obj = new MyClass; 
// echo giá trị thuộc tính $prop1 
echo $obj->getProperty(); 
 50 
echo "End of file."; 
?> 
d) Hàm Destructor 
Là một hàm đặc biệt được sử dụng để làm sạch bộ nhớ. Cách khai báo giống như 
Constructor nhưng không có tham số và được bắt đầu bằng dấu “~”. 
Ví dụ: 
class Library 
{ 
 private int ibooktypes; 
 //Constructor 
 public Library() 
 { 
 ibooktypes = 7; 
 } 
 public Library(int value) 
 { 
 ibooktypes = value; 
 } 
 ~ Library() 
 { 
 //thực thi câu lệnh 
 } 
} 
 51 
Bài 8. Lập trình hƣớng đối tƣợng 02 
8.1 Sử dụng đối tƣợng trng PHP 
8.1.1 Từ khóa New, this 
Một khi bạn đã định nghĩa lớp cho mình, thì bạn có thể tạo bao nhiêu đối tượng của kiểu 
lớp đó tùy bạn thích. Ví dụ sau là cách tạo đối tượng bởi sử dụng từ khóa new trong PHP. 
$tiengAnh = new Books; 
$toanCaoCap = new Books; 
$tuTuongHCM = new Books; 
Ở đây, chúng ta đã tạo 3 đối tượng và những đối tượng này là độc lập với nhau và chúng sẽ 
có sự tồn tại riêng rẽ nhau. Phần tiếp theo, chúng ta xem cách truy cập hàm thành viên và 
xử lý các biến thành viên trong PHP. 
Gọi hàm thành viên trong PHP 
Sau khi tạo các đối tượng, bạn sẽ có thể gọi các hàm thành viên liên quan tới đối tượng đó. 
Một hàm thành viên sẽ chỉ có thể xử lý biến thành viên liên quan tới đối tượng đó. 
8.1.2 Tán tử tha tác thành phần “->” 
Gọi hàm thành viên trong PHP 
Sau khi tạo các đối tượng, bạn sẽ có thể gọi các hàm thành viên liên quan tới đối tượng đó. 
Một hàm thành viên sẽ chỉ có thể xử lý biến thành viên liên quan tới đối tượng đó. 
Ví dụ sau minh họa cách thiết lập title và price cho 3 book bằng cách gọi các hàm thành 
viên. 
$tiengAnh->setTitle( "English Grammar in Use" ); 
$tuTuongHCM->setTitle( "Toán cao cấp 1" ); 
$toanCaoCap->setTitle( "Tư tưởng Hồ Chí Minh" ); 
$tiengAnh->setPrice( 10 ); 
$tuTuongHCM->setPrice( 15 ); 
$toanCaoCap->setPrice( 7 ); 
Bây giờ bạn gọi các hàm thành viên khác để lấy giá trị đã được thiết lập trong ví dụ trên: 
$tiengAnh->getTitle(); 
$tuTuongHCM->getTitle(); 
$toanCaoCap->getTitle(); 
$tiengAnh->getPrice(); 
$tuTuongHCM->getPrice(); 
$toanCaoCap->getPrice(); 
kết quả: 
8.1.3 Sử dụng các thuộc tính và hàm 
Để truy xuất đến các thuộc tính của đối tượng ta dùng toán tử (->) để trỏ đến. 
Cú pháp: $classname->method 
 52 
Ví dụ: 
// Khởi tạo lớp động vật mới 
$conheo = new DongVat($thuc_an); 
// Gán giá trị cho các thuộc tính 
$conheo->mat = 'Mắt 2 mí'; 
$conheo->mui = 'Mũi tây phương'; 
// Lấy các giá trị và xuất ra màn hình 
// kết quả xuất ra màn hình "Mắt 2 mí" 
echo $conheo->mat; 
// kết quả xuất ra màn hình "Mũi tây phương" 
echo $conheo->mui ; 
Gọi các phương thức của đối tượng 
Cũng tương tự như truy xuất đến các thuộc tính của đối tượng, ta dùng toán tử (->) để gọi 
các hàm trong đối tượng. 
Cú pháp: $classname->function(); 
Ví dụ: 
class DongVat 
{ 
 // Các phương thức 
 function an($thuc_an) 
 { 
 echo 'Hôm Nay Ăn Món ' . $thuc_an; 
 } 
} 
// Khởi tạo lớp động vật mới 
$conheo = new DongVat(); 
// Gọi đến hàm ăn 
// kết quả là "Hôm Nay Ăn Món Cám" 
$conheo->an('Cám'); 
Các bạn thấy đó nó cũng giống như cách gọi hàm bình thường thôi đúng không nào? 
Hàm trong đối tượng gọi đến các thuộc tính của chính mình bằng cú pháp sau: $this-
>ten_thuoc_tinh; 
Ví dụ: 
class DongVat { 
 var $hello = 'Xin chào các bạn, Tôi đang ăn nhé'; 
 // Các phương thức 
 // hàm (hành động) ăn 
 function an() 
 { 
 echo $this->hello; 
 } 
} 
// Khởi tạo lớp động vật mới 
$conheo = new DongVat(); 
// Gọi đến hàm ăn 
// kết quả "Xin chào các bạn, Tôi đang ăn nhé" 
$conheo->an(); 
 53 
8.2 Kế thừa trng PHP 
Một Class có thể kế thừa các phương thức và thuộc tính của class khác, bằng cách sử dụng 
từ khóa extends. Ví dụ, để tạo ra một class kế thừa MyClass đồng thời thêm vào nó một 
phương thức, bạn sẽ có mã lệnh như sau: 
Mở trình duyệt, và xem kết quả xuất ra như sau: 
The class "MyClass" was initiated! 
From a new method in MyOtherClass. 
I'm a class property! 
The class "MyClass" was destroyed. 
8.3 Lớp interface 
Một khái niệm nữa được đưa vào mô hình hướng đối tượng là Giao diện. Giao diện cũng 
mang nguyên tắc của mô hình trừu tượng. Nhưng điểm khác biệt ở đây là với giao diện, 
chúng ta có thể cho phép một lớp sử dụng linh động giữa một hoặc nhiều giao diện cùng 
lúc. 
Để khai báo giao diện ta có: 
<?php 
 interface animal{ 
 function sound(); 
 } 
 interface benefits{ 
 function protect() 
 } 
?> 
Và để một lớp sử dụng một hoặc nhiều giao diện ta sẽ có: 
<?php 
class ABC implements animal, benefits{ 
 public function sound(){ 
 //Thực thi mã lệnh 
 } 
 public function protect(){ 
 //Thực thi mã lệnh 
 } 
} 
?> 
? 
Có thể hiểu một cách đơn giản rằng, giao diện đem lại sự tùy chọn đầy đủ hơn. Nó cho 
phép, một lớp có thể dùng một hoặc nhiều giao diện cùng lúc. Và khi đã sử dụng, thì lớp 
đó phải định nghĩa các phương thức thuộc giao diện đó giống với ví dụ ở trên là lớp ABC 
đã phải định nghĩa 2 phương thức là sound() và protect(). 
Không giống như lớp trừu tượng, giao diện chỉ có thể chứa tên các phương thức. Ngoài ra 
nó không thể định nghĩa các phương thức hoặc chứa các thuộc tính bình thường như một 
lớp trừu tượng được. 
Và một lớp vẫn có thể vừa kế thừa và vừa sử dụng giao diện được. Ví dụ sau sẽ thể hiện 
điều đó: 
<?php 
 interface water{ 
 public function makeItWet(); 
 } 
 class weather{ 
 public function start(){ 
 return 'Here is some weather'; 
 } 
 } 
 class rain extends weather implements water{ 
 public function makeItWet(){ 
 54 
 return 'It is wet'; 
 } 
 } 
 $a = new rain(); 
 echo $a->start(); 
 echo $a->makeItWet() 
?> 
8.4 Hàm abstract 
Lớp trừu tượng là lớp sẽ chứa các phương thức trừu tượng. Và các lớp kế thừa lớp trừu 
tượng sẽ phải định nghĩa các phương thức trừu tượng ấy. Để tuân thủ một ràng buộc về 
mặt tổ chức của mô hình trừu tượng. 
Để định nghĩa một lớp, một phương thức là trừu tượng ta có cú pháp: 
<?php 
 abstract class ABC{ 
 abstract function test(); 
 } 
?> 
Lúc này có thể hiểu rằng, lớp ABC được gọi là lớp trừu tượng và phương thức test() được 
gọi là phương thức trừu tượng. 
Khi đó, một lớp muốn sử dụng lớp trừu tượng, ta sẽ có cú pháp extends để kế thừa. 
<?php 
 abstract class ABC{ 
 abstract function test(); 
 } 
 class BCD extends ABC{ 
 public function test(){ 
 //Thực thi mã lệnh 
 } 
 } 
?> 
Sự trừu tượng có thể được hiểu đơn giản như sau: 
Giả sử, kiến trúc để xây dựng 1 chiếc xe sẽ bao gồm: Bánh xe, yên xe, thắng. 
Như vậy, những mô hình xe máy, xe đạp, xe hơi cũng được gọi là xe khi chúng thỏa mãn 
những yếu tố mà kiến trúc một chiếc xe quy định. 
Diễn giải lại điều ở trên bằng hình ảnh để thấy rõ điều đó: 
Qua biểu đồ này chúng ta thầy rằng, khi chiếc xe đạp, xe máy, xe hơi kế thừa mô hình xe. 
Nó sẽ phải định nghĩa 3 phương thức trừu tượng là banhxe(), yenxe(),thangxe(). Dù rằng ở 
mỗi thể loại xe đều có những đặc thù riêng biệt. 
Như vậy có thể hiểu, mô hình trừu tượng trong thực tế được sử dụng để quản lý mô hình 
mã nguồn. Nó định ra một quy định cơ bản, và yêu cầu bất kể một lớp nào, hoặc phương 
thức nào khi muốn làm việc với nó, thì buộc phải định nghĩa theo các quy tắc mà nó đã đặt 
 55 
ra. Nhằm đảm bảo tính nhất quán và dễ kiểm soát mã nguồn hơn đối với các dự án có quy 
mô lớn và phức tạp. 
Tuy nhiên, vì lớp trừu tượng vẫn được xem là một lớp. Thế nên, ngoài chức năng quy định 
lớp trừu tượng ra, thì nó vẫn có thể khởi tạo các thuộc tính hoặc phương thức khác để phục 
vụ cho việc sử dụng của những phương thức kế thừa nó. 
Một ví dụ về việc sử dụng mô hình lớp trừu tượng: 
<?php 
abstract class employee{ 
 protected $empname; 
 protected $empage; 
 public function setdata($empname,$empage){ 
 $this->empname = $empname; 
 $this->empage = $empage; 
 } 
 abstract function outputData(); 
} 
class EmployeeData extends employee{ 
 public function __construct($name,$age){ 
 $this->setdata($name,$age); 
 } 
 function outputData(){ 
 echo $this->empname; 
 echo $this->empage; 
 } 
} 
$a = new EmployeeData("Hitesh","24"); 
$a->outputData(); 
?> 
 56 
Bài 9. Lập trình cơ sở dữ liệu với MYSQL 
9.1 Giới thiệu về hệ quản trị CSDL MySQL 
Mysql là hệ quản trị dữ liệu miễn phí, được tích hợp sử dụng chung với apache, PHP. 
Chính yếu tố phát triển trong cộng đồng mã nguồn mở nên mysql đã qua rất nhiều sự hỗ 
trợ của những lập trình viên yêu thích mã nguồn mở. Mysql cũng có cùng một cách truy 
xuất và mã lệnh tương tự với ngôn ngữ SQL. Nhưng Mysql không bao quát toàn bộ những 
câu truy vấn cao cấp như SQL. Về bản chất Mysql chỉ đáp ứng việc truy xuất đơn giản 
trong quá trình vận hành của website nhưng hầu hết có thể giải quyết các bài toán trong 
PHP. 
Cách khởi động và sử dụng MYSQL. 
Chúng ta sử dụng command như sau: 
Mysql –hname –uuser –ppass 
Để truy cập vào cơ sở dữ liệu. 
Hoặc sử dụng bộ appserv để vào nhanh hơn theo đường dẫn sau: 
Start/ Appserv/ Mysql command Line client 
Sau đó nhập password mà chúng ta đã đặt vào. 
Những định nghĩa cơ bản: 
Định nghĩa cơ sở dữ liệu, bảng, cột: 
Cơ sở dữ liệu: là tên của cơ sở dữ liệu chúng ta muốn sử dụng 
Bảng: Là 1 bảng giá trị nằm trong cơ sở dữ liệu. 
Cột là 1 giá trị nằm trong bảng. Dùng để lưu trữ các trường dữ liệu. 
Thuộc tính 
Ví dụ: 
Như vậy ta có thể hiểu như sau: 
 1 cơ sở dữ liệu có thể bao gồm nhiều bảng. 
 1 bảng có thể bao gồm nhiều cột 
 1 cột có thể có hoặc không có những thuộc tính. 
Định nghĩa 1 số thuật ngữ: 
NULL : Giá trị cho phép rỗng. 
AUTO_INCREMENT : Cho phép giá trị tăng dần (tự động). 
UNSIGNED : Phải là số nguyên dương 
PRIMARY KEY : Cho phép nó là khóa chính trong bảng. 
Loại dữ liệu trong Mysql: 
Ở đây chúng tả chỉ giới thiệu 1 số loại thông dụng: 1 số dữ liệu khác có thể tham khảo trên 
trang chủ của mysql. 
 57 
9.2 Các lệnh cơ bản trên MySQL 
Cú pháp tạo 1 cơ sở dữ liệu: 
CREATE DATABASE tên_cơ_sở_dữ_liệu; 
Cú pháp sử dụng cơ sở dữ liệu: Use tên_database; 
Cú pháp thoát khỏi cơ sở dữ liệu: Exit 
Cú pháp tạo 1 bảng trong cơ sở dữ liệu: 
CREATE TABLE user ( ,,..) 
Ví dụ: 
mysql> create table user(user_id INT(15) UNSIGNED NOT NULL AUTO_INCREMENT, 
username VARCHAR(255) NOT NULL, password CHAR(50) NOT NULL, email VARCHAR(200) NOT 
NULL, PRIMARY KEY (user_id)); 
Hiển thị có bao nhiều bảng: show tables; 
Hiển thị có bao nhiêu cột trong bảng: show columns from table; 
Thêm 1 cột vào bảng : 
ALTER TABLE tên_bảng ADD AFTER 
Ví dụ: 
mysql> alter table user add sex varchar(200) NOT NULL after email; 
Thêm giá trị vào bảng: 
Cú pháp: 
INSERT INTO Tên_bảng(tên_cột) VALUES(Giá_trị_tương_ứng); 
Ví dụ: 
mysql> insert into user(username,password,email,sex,home) 
values("Lanna","12345","
[email protected]","F","www.abc.com"); 
Truy xuất dữ liệu: 
Cú pháp: 
SELECT tên_cột FROM Tên_bảng; 
Ví dụ: 
mysql> select user_id,username from user; 
Truy xuất dữ liệu với điều kiện: 
Cú pháp: 
SELECT tên_cột FROM Tên_bảng WHERE điều kiện; 
Ví dụ: 
mysql> select user_id,username from user where user_id=2; 
Truy cập dữ liệu và sắp xếp theo trình tự 
Cú pháp: 
SELECT tên_cột FROM Tên_bảng 
WHERE điều kiện (có thể có where hoặc không) 
 58 
ORDER BY Theo quy ước sắp xếp. 
Trong đó quy ước sắp xếp bao gồm hai thông số là ASC (từ trên xuống dưới), DESC (từ 
dưới lên trên). 
mysql> select user_id,username from user order by username ASC ; 
Truy cập dữ liệu có giới hạn : 
Cú pháp: 
SELECT tên_cột FROM Tên_bảng 
WHERE điều kiện (có thể có where hoặc không) 
LIMIT vị trí bắt đầu, số record muốn lấy ra 
Ví dụ: 
mysql> select user_id,username from user order by username ASC limit 0,10 ; 
Cập nhật dữ liệu trong bảng: 
Cú pháp: 
Update tên_bảng set tên_cột=Giá trị mới 
WHERE (điều kiện). 
Nếu không có ràng buộc điều kiện, chúng sẽ cập nhật toàn bộ giá trị mới của các record 
trong bảng. 
Ví dụ: 
mysql> update user set email="
[email protected]" where user_id=1 ; 
Xóa dữ liệu trong bảng: 
Cú pháp: 
DELETE FROM tên_bảng WHERE (điều kiện). 
Nếu không có ràng buộc điều kiện, chúng sẽ xó toàn bộ giá trị của các record trong bảng. 
Ví dụ 
mysql>delete from user where user_id=1 ; 
9.3 Kết nối cơ sở dữ liệu MySQL từ PHP 
1- Kết nối cơ sở dữ liệu: 
Cú pháp: 
mysql_connect("hostname","user","pass") 
2- Lựa chọn cơ sở dữ liệu: 
Cú pháp: 
mysql_select_db("tên_CSDL") 
Ví dụ: 
$conn=mysql_connect("localhost","root","root") or die(" khong the ket noi"); 
mysql_select_db("demo"); 
3- Thực thi câu lệnh truy vấn: 
Cú pháp: 
mysql_query("Câu truy vấn ở đây"); 
4- Đếm số dòng dữ liệu trong bảng: 
Cú pháp: 
mysql_num_rows(); 
5- Lấy dữ liệu từ bảng đưa vào mảng: 
Cú pháp: 
mysql_fetch_array(); 
6- Đóng kết nối cơ sở dữ liệu: 
Cú pháp: 
mysql_close(); 
 59 
9.4 Đọc dữ liệu từ MySQL 
Dữ liệu có thể được lấy từ MySQL Tables bởi thực thi lệnh SQL SELECT qua hàm 
mysql_query trong PHP. Bạn có một vài tùy chọn để lấy dữ liệu từ MySQL. 
Tùy chọn được sử dụng phổ biến nhất là sử dụng hàm mysql_fetch_array() trong PHP. 
Hàm này trả về hàng (row) ở dạng như một mảng liên hợp, một mảng số, hoặc cả hai. Hàm 
này trả về FALSE nếu không có hàng nào. 
Dưới đây là ví dụ đơn giản để truy xuất record từ Table có tên là employee. 
Bạn thử ví dụ sau để hiển thị tất cả record từ Table có tên là employee. 
<?php 
 $dbhost = 'localhost:3036'; 
 $dbuser = 'tennguoidung'; 
 $dbpass = 'matkhau'; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
if(! $conn ) 
 { 
 die('Không thể kết nối: ' . mysql_error()); 
 } 
$sql = 'SELECT emp_id, emp_name, emp_salary FROM employee'; 
 mysql_select_db('test_db'); 
 $retval = mysql_query( $sql, $conn ); 
if(! $retval ) 
 { 
 die('Không thể lấy dữ liệu: ' . mysql_error()); 
 } 
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) 
 { 
 echo "ID :{$row['emp_id']} ". 
 "Tên nhân viên : {$row['emp_name']} ". 
 "Lương : {$row['emp_salary']} ". 
 "--------------------------------"; 
 } 
echo "Lấy dữ liệu thành công\n"; 
mysql_close($conn); 
?> 
Nội dung của các row được gán cho biến $row và sau đó các giá trị trong row được in. 
Ghi chú − Luôn luôn ghi nhớ để đặt các dấu ngoặc móc khi bạn muốn chèn một giá trị 
mảng trực tiếp vào một chuỗi. 
Trong ví dụ trên, hằng MYSQL_ASSOC được sử dụng như là tham số thứ hai cho hàm 
mysql_fetch_array(), để mà nó trả về row ở dạng như một mảng liên hợp. Với một mảng 
liên hợp, bạn có thể truy cập Field bởi sử dụng tên của chúng thay vì sử dụng chỉ mục. 
PHP cung cấp một hàm khác là mysql_fetch_assoc() mà cũng trả về row ở dạng như một 
mảng liên hợp. 
Ví dụ 
Bạn thử ví dụ sau để hiển thị tất cả record từ Table có tên là employee bởi sử dụng hàm 
mysql_fetch_assoc() trong PHP. 
<?php 
 $dbhost = 'localhost:3036'; 
 $dbuser = 'tennguoidung'; 
 $dbpass = 'matkhau'; 
 $conn = mysql_connect($dbhost, $dbuser, $dbpass); 
 if(! $conn ) 
 { 
 die('Không thể kết nối: ' . mysql_error()); 
 } 
 60 
 $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee'; 
 mysql_select_db('test_db'); 
 $retval = mysql_query( $sql, $conn ); 
 if(! $retval ) 
 { 
 die('Không thể lấy dữ liệu: ' . mysql_error()); 
 } 
 while($row = mysql_fetch_assoc($retval)) 
 { 
 echo "ID :{$row['emp_id']} ". 
 "Tên nhân viên : {$row['emp_name']} ". 
 "Lương : {$row['emp_salary']} ". 
 "--------------------------------"; 
 } 
 echo "Lấy dữ liệu thành công\n"; 
 mysql_close($conn); 
?> 
Bạn cũng có thể sử dụng hằng MYSQL_NUM, như là tham số thứ hai cho hàm 
mysql_fetch_array(). Việc này làm cho hàm đó trả về một mảng với chỉ mục dạng số. 
Ví dụ 
Bạn thử ví dụ sau để hiển thị tất cả record từ Table có tên là employee bởi sử dụng tham số 
MYSQL_NUM trong PHP. 
<?php 
 $dbhost = 'localhost:3036'; 
 $dbuser = 'tennguoidung'; 
 $dbpass = 'matkhau'; 
 $conn = mysql_connect($dbhost, $dbuser, $dbpass); 
 if(! $conn ) 
 { 
 die('Không thể kết nối: ' . mysql_error()); 
 } 
 $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee'; 
 mysql_select_db('test_db'); 
 $retval = mysql_query( $sql, $conn ); 
 if(! $retval ) 
 { 
 die('Không thể lấy dữ liệu: ' . mysql_error()); 
 } 
 while($row = mysql_fetch_array($retval, MYSQL_NUM)) 
 { 
 echo "ID :{$row[0]} ". 
 "Tên nhân viên : {$row[1]} ". 
 "Lương : {$row[2]} ". 
 "--------------------------------"; 
 } 
 echo "Lấy dữ liệu thành công\n"; 
 mysql_close($conn); 
?> 
Ba ví dụ trên sẽ cho cùng kết quả. 
 61 
Giải phóng bộ nhớ sử dụng PHP 
Giải phóng bộ nhớ ở cuối mỗi lệnh SELECT là một bài thực hành tốt cho bạn. Điều này có 
thể được thực hiện bởi sử dụng hàm mysql_free_result() trong PHP. Dưới đây là ví dụ 
minh họa cách hàm này được sử dụng. 
Ví dụ 
Bạn thử ví dụ s