Chapter 5 PHP and MySQL Lectured by: Nguyễn Hữu Hiếu Objectives In this lesson, you will: • Connect to MySQL from PHP • Work with MySQL databases using PHP • Create, modify, and delete MySQL tables with PHP • Use PHP to manipulate MySQL records • Use PHP to retrieve database records Trường Đại Học Bách Khoa TP.HCM 2 Web Lập Trình Khoa Khoa Học và Kỹ Thuật Máy Tính 2 © 2020 Connecting to MySQL with PHP • PHP has the ability to access and manipulate any database that is ODBC (Open Database Connectivity) compliant • PHP includes functionality that allows you to work directly with different types of databases, without going through ODBC Trường Đại Học Bách Khoa TP.HCM 3 Web Lập Trình Khoa Khoa Học và Kỹ Thuật Máy Tính 3 © 2020 Which MySQL Package to Use • The mysqli (MySQL Improved) package became available with PHP 5 and is designed to work with MySQL version 4.3 and later • Earlier versions must use the mysql package • The mysqli package is the object-oriented equivalent of the mysql package but can also be used procedurally • Mysqli package has improved speed, security and compatibility with libraries. Trường Đại Học Bách Khoa TP.HCM 4 Web Lập Trình Khoa Khoa Học và Kỹ Thuật Máy Tính 4 © 2020 Opening and Closing a Connection • Open a connection to a MySQL database server with the mysqli_connect() function • The mysqli_connect() function returns a positive integer if it connects to the database successfully or FALSE if it does not • Assign the return value from the mysqli_connect() function to a variable that you can use to access the database in your script Trường Đại Học Bách Khoa TP.HCM 5 Web Lập Trình Khoa Khoa Học và Kỹ Thuật Máy Tính 5 © 2020 Opening and Closing a Connection • The syntax for the mysqli_connect() function is: $connection = mysqli_connect("host" [, "user", "password"[,”database”]]); • The host argument specifies the host name where your MySQL database server is installed • The user and password arguments specify a MySQL account name and password • You can optionally select the database when connecting. Trường Đại Học Bách Khoa TP.HCM 6 Web Lập Trình Khoa Khoa Học và Kỹ Thuật Máy Tính 6 © 2020 Opening and Closing a Connection • The database connection is assigned to the $DBConnect variable $DBConnect = mysqli_connect("localhost", "billyeakus ", "hotdog"); • Close a database connection using the mysql_close() function mysqli_close($DBConnect); Trường Đại Học Bách Khoa TP.HCM 7 Web Lập Trình Khoa Khoa Học và Kỹ Thuật Máy Tính 7 © 2020 Opening and Closing a Connection mysqli_get_client_info() Returns the MySQL client library version mysqli_get_client_stats() Returns statistics about client per-process mysqli_get_client_version() Returns the MySQL client library version as an integer mysqli_get_connection_stats() Returns statistics about the client connection mysqli_get_host_info() Returns the MySQL server hostname and the connection type mysqli_get_proto_info() Returns the MySQL protocol version mysqli_get_server_info() Returns the MySQL server version mysqli_get_server_version() Returns the MySQL server version as an integer Trường Đại Học Bách Khoa TP.HCM 8 Web Lập Trình Khoa Khoa Học và Kỹ Thuật Máy Tính 8 © 2020 Opening and Closing a Connection version.php in a Web browser Trường Đại Học Bách Khoa TP.HCM 9 Web Lập Trình Khoa Khoa Học và Kỹ Thuật Máy Tính 9 © 2020 Reporting MySQL Errors • Reasons for not connecting to a database server include: – The database server is not running – Insufficient privileges to access the data source – Invalid username and/or password Trường Đại Học Bách Khoa TP.HCM 10 Web Lập Trình Khoa Khoa Học và Kỹ Thuật Máy Tính 10 © 2020 Reporting MySQL Errors • The mysqli_errno() function returns the error code from the last attempted MySQL function call or 0 if no error occurred • The mysqli_error() — Returns the text of the error message from previous MySQL operation • The mysqli_errno() and mysqli_error() functions return the results of the previous mysqli*() function Trường Đại Học Bách Khoa TP.
TÀI LIỆU HỌC THUẬT: CHƯƠNG 5 – PHP VÀ MYSQL (LẬP TRÌNH WEB)
1. Tổng quan về giáo trình
Tài liệu học tập "Chapter 5: PHP and MySQL" là một phần trong chương trình đào tạo học phần Lập trình Web (Web Lập Trình), do Khoa Khoa học và Kỹ thuật Máy tính – Trường Đại học Bách Khoa TP.HCM biên soạn và phát hành (bản quyền © 2020), với nội dung bài giảng do giảng viên Nguyễn Hữu Hiếu phụ trách.
Vị trí trong chương trình đào tạo
Học phần đóng vai trò cầu nối giữa lập trình giao diện phía máy khách (Frontend) và xử lý dữ liệu phía máy chủ (Backend). Chương 5 tập trung vào kỹ thuật tích hợp ngôn ngữ kịch bản PHP với hệ quản trị cơ sở dữ liệu quan hệ MySQL nhằm xây dựng các ứng dụng web động có khả năng lưu trữ, xử lý và truy xuất dữ liệu từ máy chủ cơ sở dữ liệu.
Mục tiêu học tập (Learning Outcomes)
Sau khi hoàn thành chương học này, người học có khả năng:
- Thiết lập và chấm dứt kết nối từ môi trường PHP tới máy chủ cơ sở dữ liệu MySQL.
- Quản lý và thao tác với các cơ sở dữ liệu MySQL thông qua các hàm tiện ích của PHP.
- Thực hiện các thao tác định nghĩa dữ liệu (DDL): tạo mới, chỉnh sửa cấu trúc và xóa bảng dữ liệu MySQL.
- Thực hiện các thao tác xử lý dữ liệu (DML): thêm mới, cập nhật và xóa các bản ghi trong cơ sở dữ liệu.
- Truy vấn, trích xuất dữ liệu từ các tập kết quả (resultset) và ánh xạ dữ liệu ra cấu trúc bảng HTML trên trình duyệt web.
Cấu trúc và cách tiếp cận
Nội dung bài giảng được xây dựng theo mô hình tiến trình kỹ thuật tuần tự: đi từ việc giới thiệu gói mở rộng mysqli, cú pháp thiết lập kết nối máy chủ, xử lý lỗi ngoại lệ, phân chia tệp cấu hình, thực thi các câu lệnh SQL không trả về dữ liệu và có trả về dữ liệu, duyệt các tập bản ghi, cho đến việc thống kê hiệu năng truy vấn và đóng tài nguyên hệ thống.
2. Nội dung kiến thức cốt lõi
2.1. Các chủ đề chính trong bài giảng
Chủ đề 1: Cơ chế kết nối và quản trị phiên làm việc
- Các hàm thực thi:
mysqli_connect(),mysqli_close(). - Khái niệm then chốt: Cú pháp kết nối
$connection = mysqli_connect("host", "user", "password", "database"). Hàm trả về định danh kết nối (dạng số nguyên dương / đối tượng) khi thành công hoặc giá trịFALSEkhi thất bại. - Trích xuất thông tin máy chủ/máy khách: Hệ thống các hàm cung cấp siêu dữ liệu:
mysqli_get_client_info(),mysqli_get_client_stats(),mysqli_get_client_version(),mysqli_get_connection_stats(),mysqli_get_host_info(),mysqli_get_proto_info(),mysqli_get_server_info(),mysqli_get_server_version().
Chủ đề 2: Kiểm soát lỗi và phân đoạn cấu hình
- Các hàm thực thi:
mysqli_errno(),mysqli_error(), hàm ngắtdie(). - Khái niệm then chốt: Xử lý các nguyên nhân lỗi kết nối phổ biến (máy chủ CSDL chưa kích hoạt, không đủ quyền hạn truy cập tài nguyên, sai thông tin định danh người dùng).
- Tổ chức tệp tin: Sử dụng các chỉ thị cấu trúc
include('file.php'),include_once('config/file.php'),require('file.php'),require_once('file.php')nhằm phân tách thông tin bảo mật và tái sử dụng kết nối.
Chủ đề 3: Thực thi câu lệnh SQL và quản lý cấu trúc bảng
- Các hàm thực thi:
mysqli_query(),mysqli_create_db(),mysqli_drop_db(). - Cú pháp:
mysqli_query(connection, query). - Quy ước giá trị trả về:
- Trả về giá trị logic
TRUEđối với các câu lệnh không trả về tập dữ liệu (CREATE DATABASE,CREATE TABLE,DROP TABLE). - Trả về con trỏ kết quả (
result pointer) đối với các câu lệnh truy vấn dữ liệu (SELECT,SHOW). - Trả về
FALSEkhi câu lệnh thực thi thất bại.
- Trả về giá trị logic
- Ràng buộc bảng: Áp dụng các mệnh đề định nghĩa dữ liệu
PRIMARY KEY(chỉ mục tham chiếu),AUTO_INCREMENT(tự động tăng giá trị tuần tự) vàNOT NULL(ràng buộc trường bắt buộc có dữ liệu).
Chủ đề 4: Thao tác dữ liệu bản ghi (DML)
- Các hàm và cú pháp: Thêm mới dữ liệu bằng
INSERT INTO table (fields) VALUES (values), nạp tệp dữ liệu văn bản dung lượng lớn qua câu lệnhLOAD DATA INFILE 'file.txt' INTO TABLE table, cập nhật dữ liệu vớiUPDATE table SET field = value WHERE condition, và xóa dữ liệu quaDELETE FROM table WHERE condition. - Lưu ý kỹ thuật: Cảnh báo về việc bỏ sót mệnh đề
WHEREsẽ dẫn đến việc cập nhật hoặc xóa toàn bộ bản ghi trong bảng; lưu ý tương thích đối với lệnhLOAD DATA(không hỗ trợ trên định dạng Paradox).
Chủ đề 5: Xử lý tập kết quả truy vấn (Resultset Handling)
- Khái niệm con trỏ kết quả (Result pointer): Biến đặc biệt trỏ tới dòng hiện tại trong tập kết quả trả về từ câu lệnh
SELECT. - Hàm trích xuất dữ liệu:
mysqli_fetch_row(): Trích xuất dòng hiện tại vào một mảng chỉ mục số nguyên (indexed array:$Row[0],$Row[1],...) và tịnh tiến con trỏ sang dòng kế tiếp.mysqli_fetch_assoc(): Trích xuất dòng hiện tại vào một mảng kết hợp (associative array:$Row['firstname'],$Row['lastname'],...) với khóa mảng là tên các trường dữ liệu.
- Cấu trúc lặp duyệt: Sử dụng vòng lặp
while ($row = mysqli_fetch_assoc($result))hoặcdo ... while ($Row)để duyệt dữ liệu và in ra các thẻ HTML<table>,<tr>,<td>.
Chủ đề 6: Thống kê trạng thái và giải phóng tài nguyên
- Hàm thống kê:
mysqli_num_rows($result): Đếm tổng số dòng dữ liệu trả về từ câu lệnhSELECT.mysqli_num_fields($result): Đếm tổng số cột/trường trong tập kết quả.mysqli_affected_rows($con): Trả về số lượng dòng bị thay đổi bởi các truy vấnINSERT,UPDATE,DELETE.mysqli_info($con): Trả về chuỗi thông tin định lượng chi tiết cho các thao tácINSERT INTO,UPDATE,LOAD DATA INFILE.
- Quản lý bộ nhớ: Sử dụng
mysqli_free_result($result)để thu hồi vùng nhớ lưu trữ tập kết quả sau khi hoàn tất xử lý. - Toán tử đàn áp lỗi: Sử dụng ký tự
@trước tên hàm (ví dụ:@mysqli_query(...)) để ngăn chặn việc hiển thị lỗi trực tiếp ra màn hình người dùng cuối.
2.2. Bảng tổng hợp các hàm xử lý CSDL trong tài liệu
| Tên hàm / Cấu trúc | Cú pháp đại diện | Ý nghĩa kỹ thuật | Dữ liệu trả về |
|---|---|---|---|
mysqli_connect() |
mysqli_connect($host, $user, $pass, $db) |
Khởi tạo phiên kết nối đến máy chủ MySQL | Định danh kết nối / FALSE |
mysqli_select_db() |
mysqli_select_db($link, $database) |
Chọn cơ sở dữ liệu làm việc hiện hành | TRUE / FALSE |
mysqli_query() |
mysqli_query($link, $sql) |
Gửi và thực thi câu lệnh SQL đến máy chủ | Con trỏ kết quả / TRUE / FALSE |
mysqli_errno() |
mysqli_errno($link) |
Lấy mã số lỗi từ thao tác MySQL gần nhất | Số nguyên (0 nếu không có lỗi) |
mysqli_error() |
mysqli_error($link) |
Lấy nội dung thông báo lỗi dạng văn bản | Chuỗi ký tự thông báo lỗi |
mysqli_fetch_row() |
mysqli_fetch_row($result) |
Lấy dữ liệu dòng hiện tại dạng mảng chỉ mục | Mảng chỉ mục ($row[0]) / NULL |
mysqli_fetch_assoc() |
mysqli_fetch_assoc($result) |
Lấy dữ liệu dòng hiện tại dạng mảng kết hợp | Mảng kết hợp ($row['key']) / NULL |
mysqli_num_rows() |
mysqli_num_rows($result) |
Đếm số dòng trả về từ câu truy vấn SELECT |
Số nguyên |
mysqli_affected_rows() |
mysqli_affected_rows($link) |
Đếm số dòng bị thay đổi từ INSERT/UPDATE/DELETE |
Số nguyên |
mysqli_info() |
mysqli_info($link) |
Trả về thông tin chi tiết của thao tác SQL cuối | Chuỗi ký tự thống kê |
mysqli_free_result() |
mysqli_free_result($result) |
Giải phóng bộ nhớ con trỏ kết quả | void |
mysqli_close() |
mysqli_close($link) |
Đóng kết nối máy chủ cơ sở dữ liệu | TRUE / FALSE |
2.3. Kiến thức nền tảng và kỹ năng xây dựng
- Lý thuyết nền tảng:
- Khả năng tương thích mở của PHP: Truy cập cơ sở dữ liệu thông qua chuẩn giao tiếp mở ODBC (Open Database Connectivity) hoặc giao tiếp trực tiếp không qua ODBC thông qua các gói mở rộng chuyên biệt.
- Mô hình gói thư viện: Sự chuyển dịch từ gói
mysqltruyền thống sang góimysqli(MySQL Improved) hỗ trợ cả hai phong cách: lập trình thủ tục (procedural) và lập trình hướng đối tượng (object-oriented). - Khử khuẩn dữ liệu người dùng: Áp dụng hàm
mysql_real_escape_string()để xử lý các biến đầu vào từ người dùng ($firstname,$lastname), loại bỏ các ký tự đặc biệt có thể phá vỡ cấu trúc câu truy vấn SQL.
- Kỹ năng phát triển:
- Kỹ năng kỹ thuật: Viết kịch bản PHP kết nối máy chủ cục bộ (
localhost) hoặc từ xa (cs.edu), khởi tạo cấu trúc CSDL, viết truy vấn tham số hóa. - Kỹ năng phân tích: Phân tích mã lỗi từ
mysqli_errno(), chẩn đoán sự cố đường truyền mạng hoặc quyền hạn người dùng thông qua mã phản hồi. - Kỹ năng xử lý dữ liệu: Kết xuất dữ liệu bảng quan hệ ra giao diện web động dưới dạng bảng HTML và xử lý các tập dữ liệu nhập ngoại dạng tệp văn bản thô.
- Kỹ năng kỹ thuật: Viết kịch bản PHP kết nối máy chủ cục bộ (
3. Phương pháp giảng dạy và học tập
Phương pháp tiếp cận sư phạm (Pedagogical Approach)
Bài giảng sử dụng phương pháp giảng dạy dựa trên nghiên cứu tình huống mã nguồn cụ thể (Code-driven approach). Cấu trúc từng bài học đi liền giữa giải thích cú pháp lý thuyết và các khối mã mẫu (Sample Code).
Tài liệu áp dụng phương pháp so sánh đối chứng giữa cú pháp chuẩn và cú pháp gây lỗi (minh họa bằng các khối mã good và bad trong slide số 13):
- Thực hiện kết nối tới máy chủ
cs.eduvới tài khoảndemo. - Đối chiếu trường hợp chọn sai tên CSDL (
nonexistentdb) để kích hoạt hàmmysqli_errno(). - Đối chiếu trường hợp truy vấn bảng không tồn tại (
SELECT * FROM nonexistenttable) để quan sát phản hồi lỗi từ hệ thống.
Phân tích tình huống và dữ liệu thực hành
Tài liệu sử dụng hai bộ dữ liệu thực nghiệm xuyên suốt các ví dụ:
- Bảng dữ liệu
friends: Gồm các trường thông tinFirstName,LastName,Address,Age. Kịch bản thực hành bao gồm:- Thêm mới bản ghi:
('Lester', 'Longbottom', '35'),('Carly', 'Sampson', '33'). - Cập nhật dữ liệu có điều kiện:
UPDATE friends SET Age = '61' WHERE FirstName = 'Bill' AND LastName = 'Yeakus'. - Duyệt và in toàn bộ danh sách ra bảng HTML có viền (
border=1).
- Thêm mới bản ghi:
- Bảng dữ liệu
company_cars: Thực hành chèn nhiều bản ghi đồng thời với các thông tin mã định danh xe, năm sản xuất, hãng sản xuất, dòng xe (ví dụ:('CPQ-894', 2011, 'Honda', 'Insight', 49.0)), hoặc nạp hàng loạt từ tệp văn bản nguồncompany_cars.txtthông qua lệnhLOAD DATA INFILE.
Tiêu chuẩn đánh giá và hướng dẫn tự học
- Tiêu chuẩn đánh giá: Đánh giá thông qua tính chính xác của việc kiểm tra trạng thái kết nối (sử dụng điều kiện
if (!$link)kết hợp hàmdie()), khả năng lựa chọn hàm nạp mảng phù hợp (mysqli_fetch_rowso vớimysqli_fetch_assoc), và việc giải phóng bộ nhớ đầy đủ (mysqli_free_result,mysqli_close). - Hướng dẫn tự học: Người học được khuyến nghị tạo lập các tệp kịch bản kiểm tra độc lập (ví dụ tệp
version.phpđể kiểm tra phiên bản máy chủ/máy khách), tổ chức cây thư mục chuẩn với thư mục conconfig/chứa tệp cấu hình kết nối, và thực hành gỡ lỗi trực tiếp qua các thông báo domysqli_error()trả về.
4. Điểm nổi bật và cập nhật kỹ thuật
So sánh kỹ thuật giữa gói mysql và mysqli
Theo thông tin tại slide số 4, gói mysqli (MySQL Improved) được giới thiệu từ phiên bản PHP 5 nhằm làm việc với máy chủ MySQL từ phiên bản 4.3 trở về sau:
- Tính tương thích: Các phiên bản PHP trước đó bắt buộc phải sử dụng gói thư viện
mysql. - Mô hình lập trình: Gói
mysqlicung cấp giao diện hướng đối tượng tương đương với góimysql, đồng thời duy trì khả năng sử dụng theo mô hình lập trình thủ tục (procedural programming). - Hiệu năng và an toàn: Gói
mysqliđược tối ưu hóa về tốc độ thực thi, nâng cao khả năng bảo mật và cải thiện tính tương thích với các hệ thống thư viện mở rộng.
Kỹ thuật quản trị tệp và tích hợp dữ liệu
- Phân đoạn tệp cấu hình: Bài giảng làm rõ cơ chế quản lý tệp phụ trợ thông qua 4 hàm:
include(),include_once(),require(),require_once(). Cơ chế này cho phép nạp các tệp cấu hình kết nối (ví dụ:config/file.phpnạp tiếpfile2.php) mà không gây xung đột định nghĩa hàm hay biến môi trường. - Xử lý tệp dữ liệu phẳng (Flat-file Processing): Hỗ trợ nhập liệu khối lượng lớn trực tiếp từ các tệp văn bản lưu trữ trên hệ thống tệp cục bộ vào bảng CSDL bằng câu lệnh
LOAD DATA INFILE, tối ưu hóa thời gian xử lý so với việc thực thi nhiều câu lệnhINSERTđơn lẻ. - Kiểm soát luồng lỗi thông minh: Kết hợp toán tử kiểm soát lỗi
@với hàm kiểm tramysqli_info()để thu thập thông tin về các dòng dữ liệu bị trùng lặp, bị bỏ qua hoặc khớp mẫu điều kiện mà không làm gián đoạn giao diện của người dùng.
5. Đối tượng sử dụng giáo trình
Nhóm người học mục tiêu
- Sinh viên đại học chính quy: Sinh viên theo học các ngành Khoa học Máy tính, Kỹ thuật Máy tính và Công nghệ Thông tin thuộc Trường Đại học Bách Khoa TP.HCM hoặc các cơ sở đào tạo tương đương đang học môn Lập trình Web.
- Người tự học và kỹ sư phát triển Web Backend: Người học cần tài liệu tra cứu có hệ thống về cách thức tích hợp PHP với hệ quản trị cơ sở dữ liệu quan hệ MySQL theo tiêu chuẩn cú pháp
mysqli.
Yêu cầu kiến thức tiên quyết (Prerequisites)
Để tiếp thu trọn vẹn nội dung chương học, người học cần trang bị trước:
- Kiến thức cơ bản về ngôn ngữ PHP: Cú pháp khai báo biến, các cấu trúc điều khiển (
if/else,while,do...while), kiểu dữ liệu mảng và cách tổ chức tệp (include,require). - Kiến thức cơ sở dữ liệu và ngôn ngữ SQL: Cú pháp các câu lệnh thao tác bảng (
CREATE TABLE,DROP TABLE), các mệnh đề ràng buộc (PRIMARY KEY,AUTO_INCREMENT,NOT NULL) và các câu lệnh truy vấn dữ liệu (SELECT,INSERT,UPDATE,DELETE). - Kiến thức cơ bản về HTML: Cấu trúc văn bản và các thẻ định dạng bảng biểu (
<table>,<tr>,<th>,<td>).
Vai trò đối với giảng viên
Tài liệu cung cấp khung bài giảng hoàn chỉnh gồm hệ thống mục tiêu học tập rõ ràng, các slide giải thích cú pháp hàm đi kèm mã nguồn mẫu và các hình ảnh chụp màn hình kết quả thực tế (output), hỗ trợ giảng viên triển khai bài giảng lý thuyết trên lớp kết hợp hướng dẫn thực hành tại phòng máy.
6. Câu hỏi thường gặp (FAQ)
1. Giáo trình này phù hợp với đối tượng nào?
Tài liệu được biên soạn phục vụ trực tiếp cho sinh viên thuộc khối ngành Khoa học và Kỹ thuật Máy tính đang tham gia học phần Lập trình Web, cũng như người học cần nắm vững kỹ thuật tương tác cơ sở dữ liệu phía máy chủ bằng ngôn ngữ PHP.
2. Cần chuẩn bị những kiến thức nền tảng nào trước khi học chương này?
Người học cần nắm vững cú pháp lập trình PHP cơ bản, các câu lệnh truy vấn cơ sở dữ liệu SQL chuẩn (DDL và DML), nguyên lý hoạt động của máy chủ web cục bộ và các thẻ cấu trúc bảng trong HTML.
3. Điểm khác biệt giữa thư viện mysqli và thư viện mysql cũ là gì?
Thư viện mysqli (MySQL Improved) được phát triển từ PHP 5 dành cho MySQL 4.3 trở lên, hỗ trợ cả hai mô hình lập trình hướng đối tượng và thủ tục, có tốc độ xử lý nhanh hơn, tính bảo mật cao hơn và hỗ trợ nhiều hàm chuyên sâu để trích xuất trạng thái máy chủ/kết quả truy vấn so với gói mysql cũ.
4. Làm thế nào để phân biệt giữa mysqli_fetch_row() và mysqli_fetch_assoc()?
Cả hai hàm đều dùng để trích xuất từng dòng dữ liệu từ con trỏ kết quả và tịnh tiến con trỏ đến dòng tiếp theo. Tuy nhiên:
mysqli_fetch_row()trả về một mảng chỉ mục số nguyên (các trường được truy xuất theo số thứ tự:$Row[0],$Row[1],...).mysqli_fetch_assoc()trả về một mảng kết hợp (các trường được truy xuất thông qua tên cột làm khóa:$Row['firstname'],$Row['age'],...).
5. Có những tài liệu và thành phần bổ trợ nào đi kèm bài giảng?
Bài giảng đi kèm hệ thống mã nguồn mẫu minh họa:
- Tệp
version.phphiển thị thông tin máy chủ và thư viện máy khách. - Tệp cấu hình phân đoạn
config/file.phpvàfile2.php. - Tệp dữ liệu văn bản
company_cars.txtphục vụ thực hành lệnhLOAD DATA INFILE. - Các đoạn mã mẫu thực thi thao tác CRUD trên bảng dữ liệu thực nghiệm
friends.
7. Kết luận
Tài liệu "Chapter 5: PHP and MySQL" của Khoa Khoa học và Kỹ thuật Máy tính – Trường Đại học Bách Khoa TP.HCM cung cấp hệ thống kiến thức hoàn chỉnh về kỹ thuật kết nối và quản trị cơ sở dữ liệu quan hệ MySQL thông qua ngôn ngữ kịch bản PHP.
Lộ trình học tập được định hình qua 5 giai đoạn tuần tự:
[Khởi tạo kết nối & Bắt lỗi]
Nội dung giáo trình tập trung vào việc chuẩn hóa thao tác lập trình qua gói hàm mysqli_*, cung cấp các giải pháp phân đoạn mã nguồn qua include_once/require_once, xử lý an toàn dữ liệu đầu vào với mysql_real_escape_string(), và quản trị bộ nhớ hệ thống với mysqli_free_result(). Đây là tài liệu nền tảng định hình chuẩn mực kỹ thuật cho việc xây dựng ứng dụng web động phía máy chủ.