Bài giảng Thiết kế và lập trình Web - Bài 8: PHP (MySQL)

MySQL – Tổng quan

 MySQL là Relational Database Management System -

Hệ thống quản lý cơ sở dữ liệu quan hệ.

 MySQL là một CSDL không những chứa dữ liệu mà

nó còn cho phép người dùng tìm kiếm, xử lý, sắp

xếp,. dữ liệu.

 MySQL hỗ trợ nhiều người dùng, với nhiều quyền

khác nhau nên có độ bảo mật khá cao.

 MySQL sử dụng các truy vấn theo chuẩn SQL.

 Non-transaction-safe table: MyISAM, Heap

– Tốc độ nhanh.

– Ít tốn bộ nhớ.

– Ít tốn không gian đĩa.

– Không tạo được ràng buộc giữa các bảng (Relationship).

 Transaction-safe table: InnoDB

– An toàn, khi MySQL bị crash hoặc mất điện vẫn còn dữ liệu cũ.

– Thực hiện một nhóm truy vấn cho tới khi commit.

– Hủy nhóm truy vấn bằng rollback.

– Nếu thay đổi thất bại, các thay đổi sẽ bị hủy.

– Hỗ trợ Relationship.

pdf 59 trang kimcuc 7980
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Thiết kế và lập trình Web - Bài 8: PHP (MySQL)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Thiết kế và lập trình Web - Bài 8: PHP (MySQL)

Bài giảng Thiết kế và lập trình Web - Bài 8: PHP (MySQL)
Thiết kế và lập trình Web 
Viện CNTT & TT 
Bài 8 
PHP - MySQL 
Thiết kế và lập trình Web 
MySQL – Tổng quan 
 MySQL là Relational Database Management System - 
Hệ thống quản lý cơ sở dữ liệu quan hệ. 
 MySQL là một CSDL không những chứa dữ liệu mà 
nó còn cho phép người dùng tìm kiếm, xử lý, sắp 
xếp,... dữ liệu. 
 MySQL hỗ trợ nhiều người dùng, với nhiều quyền 
khác nhau nên có độ bảo mật khá cao. 
 MySQL sử dụng các truy vấn theo chuẩn SQL. 
2 
Thiết kế và lập trình Web 
MySQL – Tổng quan 
3 
Thiết kế và lập trình Web 
MySQL – Tổng quan 
 Non-transaction-safe table: MyISAM, Heap 
– Tốc độ nhanh. 
– Ít tốn bộ nhớ. 
– Ít tốn không gian đĩa. 
– Không tạo được ràng buộc giữa các bảng (Relationship). 
 Transaction-safe table: InnoDB 
– An toàn, khi MySQL bị crash hoặc mất điện vẫn còn dữ liệu cũ. 
– Thực hiện một nhóm truy vấn cho tới khi commit. 
– Hủy nhóm truy vấn bằng rollback. 
– Nếu thay đổi thất bại, các thay đổi sẽ bị hủy. 
– Hỗ trợ Relationship. 
4 
Thiết kế và lập trình Web 
MySQL – Dữ liệu kiểu chuỗi 
5 
Thiết kế và lập trình Web 
MySQL – Dữ liệu kiểu số 
6 
Thiết kế và lập trình Web 
MySQL – Dữ liệu kiểu thời gian 
7 
Thiết kế và lập trình Web 
Một số thuật ngữ hay dùng 
 NULL: Giá trị cho phép rỗng. 
 NOT NULL: Giá trị không được 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. 
 COLLATE: Bảng mã sử dụng (thường là utf8_unicode_ci). 
 ENGINE: Cấu trúc lưu trữ (thường là MyISAM / InnoDB). 
 COMMENT: Chú thích cho trường hoặc bảng. 
8 
Thiết kế và lập trình Web 
Câu lệnh MySQL 
 Hầu hết câu lệnh SQL đều tương thích trong MySQL. 
 Một số lệnh thông dụng: 
– CREATE Tạo CSDL hoặc bảng 
– ALTER Thay đổi bảng có sẵn 
– INSERT INTO Chèn dữ liệu vào bảng 
– SELECT Lấy dữ liệu từ bảng 
– DELETE Xóa dữ liệu khỏi bảng 
– UPDATE Cập nhật dữ liệu đã có trong bảng 
– DROP Xóa bảng hay toàn bộ CSDL. 
9 
Thiết kế và lập trình Web 
Câu lệnh MySQL 
 Các hàm tổng hợp dữ liệu: 
– AVG, COUNT, SUM, MIN, MAX 
 Các hàm riêng của MySQL: 
– FIRST, LAST 
– UCASE, LCASE, MID, LEN 
– ROUND, FORMAT 
– NOW 
10 
Thiết kế và lập trình Web 
Các lệnh SQL 
 Tạo cơ sở dữ liệu 
CREATE DATABASE database_name 
Thiết kế và lập trình Web 
Các lệnh SQL 
 Tạo table 
CREATE TABLE table_name 
( 
column_name1 data_type [property], 
column_name2 data_type [property], 
column_name3 data_type [property], 
.... 
) 
NOT NULL / UNIQUE / PRIMARY KEY / FOREIGN KEY /CHECK /DEFAULT 
Thiết kế và lập trình Web 
Các lệnh SQL 
 Truy vấn cơ sở dữ liệu 
SELECT [DISTINCT] list_col / * / 
FROM table_name 
[WHERE col_name operator value ] 
[ORDER BY col_names ASC|DESC ] 
Thiết kế và lập trình Web 
Các lệnh SQL 
 Một số phép toán 
Phép toán Mô tả 
= Equal 
 Not equal 
> Greater than 
< Less than 
>= Greater than or equal 
<= Less than or equal 
BETWEEN Between an inclusive range 
LIKE Search for a pattern 
IN If you know the exact value you want to return for at 
least one of the columns 
Thiết kế và lập trình Web 
Các lệnh SQL 
 Thêm mẩu tin 
INSERT INTO table_name VALUES (value1, value2, 
value3,...) 
Hoặc 
INSERT INTO table_name (column1, column2, 
column3,...) VALUES (value1, value2, value3,...) 
Thiết kế và lập trình Web 
Các lệnh SQL 
 Cập nhật dữ liệu 
UPDATE table_name SET column1=value, 
column2=value2,... 
[WHERE some_column=some_value ] 
Thiết kế và lập trình Web 
Các lệnh SQL 
 Lệnh xóa mẩu tin 
DELETE FROM table_name 
[WHERE some_column=some_value ] 
Thiết kế và lập trình Web 
Các lệnh SQL 
 Lệnh SELECT INNER JOIN 
SELECT column_name(s) 
FROM table_name1 
INNER JOIN table_name2 
ON tbl_name1.col_name=tbl_name2.col_name 
Thiết kế và lập trình Web 
Các lệnh SQL 
 Lệnh SELECT LEFT JOIN 
SELECT column_name(s) 
FROM table_name1 
LEFT JOIN table_name2 
ON tbl_name1.col_name=tal_name2.col_name 
Thiết kế và lập trình Web 
Các lệnh SQL 
 Lệnh RIGHT JOIN 
SELECT column_name(s) 
FROM table_name1 
RIGHT JOIN table_name2 
ON tbl_name1.col_name=tbl_name2.col_name 
Thiết kế và lập trình Web 
Các lệnh SQL 
 Lệnh SELECT FULL JOIN 
SELECT column_name(s) 
FROM table_name1 
FULL JOIN table_name2 
ON tbl_name1.col_name=tbl_name2.col_name 
Thiết kế và lập trình Web 
Các lệnh SQL 
 Lệnh SELECT UNION 
SELECT column_name(s) FROM table_name1 
UNION [ALL] 
SELECT column_name(s) FROM table_name2 
Thiết kế và lập trình Web 
Các lệnh SQL 
 Lệnh SELECT INTO 
SELECT */ list_col 
INTO new_table_name [IN externaldatabase] 
FROM old_tablename 
Thiết kế và lập trình Web 
 Thao tác với CSDL qua nhiều giao diện khác 
nhau: 
– Màn hình console 
– Giao diện Web 
– Phần mềm hỗ trợ 
Thiết kế và lập trình Web 
 Thao tác với CSDL qua nhiều giao diện khác 
nhau: 
– Màn hình console 
– Giao diện Web 
– Phần mềm hỗ trợ 
Thiết kế và lập trình Web 
phpMyAdmin – HQT CSDL MySQL 
 Là phần mềm mã nguồn mở trên nền Web, được tích 
hợp trong Vertrigo, WampServer, AppServ, XAMPP,... 
 Hỗ trợ giao diện thân thiện giúp người dùng dễ dàng 
quản lý và thực thi các câu lệnh MySQL. 
 Được phát triển từ năm 1998 (GNU General Public 
License). 
 Độc lập với nền tảng hệ điều hành (Có thể chạy trên các 
nền Linux/UNIX, MacOS, Windows,...). 
 Thông tin thêm về phpMyAdmin: 
26 
Thiết kế và lập trình Web 
phpMyAdmin – Khởi động 
 Sau khi cài Vertrigo (WampServer / AppServ / XAMPP), tiến 
hành khởi động chương trình. 
 Click chuột chọn: 
– Tools\PhpMyAdmin. 
– Hoặc mở trình duyệt web và gõ vào thanh địa chỉ: 
  (hoặc  
 Một hộp thoại yêu cầu nhập thông tin đăng nhập xuất hiện: 
Trong trường hợp 
thực hành thì đăng 
nhập với thông tin 
mặc định: 
root / 1234567 
Nên thay đổi thông tin đăng nhập mặc định để tránh rủi ro về CSDL. 
27 
Thiết kế và lập trình Web 
phpMyAdmin – Giao diện chính 
Danh sách 
các Bảng. 
Menu chức năng. 
Thông tin về MySQL, 
Web server và 
phpMyAdmin. 
Đổi mật khẩu. 
Tạo CSDL mới. 
28 
Thiết kế và lập trình Web 
phpMyAdmin – Các thao tác cơ bản 
 Tạo cơ sở dữ liệu 
 Tạo bảng 
 Chèn dữ liệu vào bảng 
 Xem dữ liệu có trong bảng 
 Tìm kiếm dữ liệu 
 Thực thi truy vấn SQL 
 Xuất (Export) cơ sở dữ liệu 
 Nhập (Import) cơ sở dữ liệu 
29 
Thiết kế và lập trình Web 
phpMyAdmin – Tạo cơ sở dữ liệu 
Để CSDL có thể lưu trữ được tiếng Việt, nên 
chọn bảng mã là utf8_unicode_ci. 
 Lưu ý: Tên CSDL phải 
– đảm bảo quy tắc về ký tự (không nên có dấu, không 
chứa khoảng trắng, không chứa ký tự đặc biệt,...). 
– không trùng tên với CSDL đã có. 
Nhập tên CSDL. 
Chọn bảng mã. 
Tạo CSDL. 
30 
Thiết kế và lập trình Web 
phpMyAdmin – Tạo bảng 
Chọn CSDL cần tạo bảng ở danh sách bên 
trái, sau đó nhập vào tên bảng cần tạo. 
 Lưu ý: Tên Bảng phải 
– đảm bảo quy tắc về tên giống tên CSDL. 
– không trùng với tên bảng đã có trong cùng 1 CSDL. 
– nên đặt tên bảng có “tiếp đầu ngữ” để dễ quản lý 
sau này. 
Nhập tên Bảng. 
Số trường dữ liệu. 
TạoBảng. 
31 
Thiết kế và lập trình Web 
phpMyAdmin – Tạo bảng 
Chú thích Bảng. Dạng lưu trữ. 
Bảng mã. 
Tạo Bảng. 
Tên trường. 
Kiểu dữ liệu. 
Độ dài dữ liệu. 
Bảng mã. 
Khóa. Chú thích trường. 
Nếu bảng có nhiều trường, sẽ thay đổi kiểu hiển thị từ dạng cột sang dạng dòng. 
32 
Thiết kế và lập trình Web 
phpMyAdmin – Chèn dữ liệu vào bảng 
Chọn bảng cần thêm dữ liệu từ danh sách các 
bảng, click Insert, sau đó nhập dữ liệu theo đúng 
định dạng kiểu của trường tương ứng. 
 Lưu ý: 
– Các trường NOT NULL bắt buộc phải nhập. 
– Nếu trường được thiết lập là tự động tăng 
(AUTO_INCREMENT) thì bỏ trống, không nhập vào. 
– Nếu dữ liệu chứa các ký tự đặc biệt như \ “ ‘ khi 
chèn vào phải thêm một dấu \ phía trước. 
– ... 
33 
Thiết kế và lập trình Web 
phpMyAdmin – Xem dữ liệu trong bảng 
34 
Thiết kế và lập trình Web 
phpMyAdmin – Tìm kiếm dữ liệu 
35 
Thiết kế và lập trình Web 
phpMyAdmin – Thực thi truy vấn SQL 
36 
Thiết kế và lập trình Web 
phpMyAdmin – Export cơ sở dữ liệu 
 Sử dụng chức năng Export từ menu chức năng. 
 Có thể Export dữ liệu ra nhiều định dạng. 
 Đây là phương pháp dùng để sao lưu dự phòng 
CSDL, đề phòng rủi ro có thể xảy ra. 
 Dữ liệu Export có thể xuất dưới dạng text hoặc dạng 
tập tin. 
37 
Thiết kế và lập trình Web 
phpMyAdmin –Import cơ sở dữ liệu 
Chọn tập tin chứa 
CSDL cần Import. 
Nếu muốn 
Import vào một 
CSDL mới thì 
cần phải tạo 
CSDL trước, sau 
đó mới Import 
vào CSDL vừa 
tạo. 
Import. 
Dung lượng tối đa 
của tập tin Import. 
38 
Thiết kế và lập trình Web 
Các bước truy cập CSDL MySQL 
 Tạo kết nối đến database server 
 Lựa chọn CSDL 
 Xây dựng truy vấn và thực hiện truy vấn 
 Xử lý kết quả trả về 
 Đóng kết nối đến server 
Thiết kế và lập trình Web 
Các hàm về cơ sở dữ liệu MySQL 
MySQL 
Script 
Thư viện chuẩn 
MySQL 
Sử dụng hàm 
mysql_ 
Thư viện cải tiến 
MySQLi 
Sử dụng lớp 
mysqli:: 
Sử dụng hàm 
mysqli_ 
40 
Thiết kế và lập trình Web 
Các hàm về cơ sở dữ liệu MySQL (thư viện 
chuẩn) 
Các hàm này có tiền tố là mysql_ 
 resource mysql_connect([string $server [, string $username [, string 
$password]]]) 
 resource mysql_pconnect([string $server [, string $username [, 
string $password]]]) 
 bool mysql_select_db(string $database_name [, resource 
$link_identifier]) 
 resource mysql_query(string $query [, resource $link_identifier]) 
 array mysql_fetch_array(resource $result [, int $result_type]) 
 bool mysql_free_result(resource $result) 
 bool mysql_close([resource $link_identifier]) 
41 
Thiết kế và lập trình Web 
Tạo kết nối đến máy chủ CSDL 
$abc = mysql_connect($host,$user,$pass) 
or die(“Không kết nối được mysql_error()”); 
Trong đó: 
- Hàm die(“Chuỗi ”): Đưa ra thông báo và kết 
thúc. 
- mysql_error() đưa ra mã lỗi. 
- $abc: tên biến nhận kết nối (true/false), $host 
tên máy chủ, $user tên người dùng, $pass là 
mật khẩu. 
Thiết kế và lập trình Web 
Tạo kết nối đến máy chủ CSDL 
<?php 
mysql_connect("localhost", "root", 
"1234567") 
 or die("Khong the ket noi 
CSDL."); 
echo("Ket noi thanh cong."); 
mysql_close(); 
?> 
Thiết kế và lập trình Web 
Các hàm về cơ sở dữ liệu MySQL 
mysql_connect & mysql_pconnect 
 Giống nhau: 
– Dùng để khởi tạo một kết nối đến server. 
 Khác nhau: 
– Mỗi lần gọi hàm mysql_connect() hệ thống sẽ khởi tạo một kết nối mới 
tới server, còn khi sử dụng hàm mysql_pconnect(), hệ thống sẽ tận 
dụng kết nối đã được thiết lập trước đó. 
– Nếu trang web của chúng ta được gọi nhiều lần trong một khoảng thời 
gian ngắn hàm mysql_connect() sẽ tiêu tốn một lượng tài nguyên đáng 
kể của hệ thống để thiết lập kết nối. Vì vậy, hãy cố gắng sử dụng hàm 
kết nối mysql_pconnect(). 
44 
Thiết kế và lập trình Web 
Chọn CSDL 
 Chọn database: 
– bool mysql_select_db($name) 
Ví dụ: 
<?php 
mysql_connect("localhost", "jon", 
"secret") 
 or die("Could not connect to MySQL."); 
mysql_select_db("Library") 
 or die("Could not select database."); 
?> 
Thiết kế và lập trình Web 
Thực hiện truy vấn SQL 
mysql_query($query) 
 Thực hiện truy vấn 
<?php 
mysql_connect("localhost", "root", "") 
 or die("Could not connect to MySQL."); 
mysql_select_db("Library") 
 or die("Could not select database."); 
$result = mysql_query("SELECT * from author"); 
mysql_close(); 
?> 
46 
Thiết kế và lập trình Web 
Xử lý kết quả truy vấn 
Số record bị ảnh hưởng bởi lệnh trước đó: 
– int mysql_affected_rows() 
Số record là kết quả của truy vấn SELECT: 
– int mysql_num_rows() 
 Lấy kết quả truy vấn ra đối tượng: 
– obj mysql_fetch_object($result) 
 Lấy kết quả truy vấn ra mảng chỉ mục là số: 
– array mysql_fetch_row($result) 
 Lấy kết quả truy vấn ra mảng chỉ mục là tên field: 
– array mysql_fetch_assoc($result) 
47 
Thiết kế và lập trình Web 
48 
Xử lý kết quả truy vấn 
 Số record bị ảnh hưởng bởi lệnh INSERT, 
REPLACE, UPDATE, hoặc DELETE trước đó: 
– int mysql_affected_rows() 
 Số record là kết quả của truy vấn SELECT: 
– int mysql_num_rows() 
<?php 
... 
$sql = "UPDATE details SET num_of_books=9 WHERE 
ISBN='1861003730'"; 
$result = mysql_query($sql); 
if ($result) { 
 $affectedRows = mysql_affected_rows(); 
 echo("$affectedRows record(s) updated."); 
} else echo("Query failed: $sql"); 
mysql_close(); 
?> 
Thiết kế và lập trình Web 
49 
Xử lý kết quả truy vấn 
 Lấy kết quả truy vấn ra mảng chỉ mục là số: 
– array mysql_fetch_row($result) 
<?php 
... 
$sql = "SELECT ISBN, book_title FROM title"; 
$result = mysql_query($sql, $conn); 
while ($row = mysql_fetch_row($result)) { 
 echo("ISBN: " . htmlspecialchars($row[0]) . 
 ", Title: " . htmlspecialchars($row[1]) . "<br 
/>"); 
} 
mysql_free_result($result); 
mysql_close(); 
?> 
Thiết kế và lập trình Web 
50 
Xử lý kết quả truy vấn 
 Lấy kết quả truy vấn ra mảng chỉ mục là tên field: 
– array mysql_fetch_assoc($result) 
<?php 
... 
$sql = "SELECT ISBN, book_title FROM title"; 
$result = mysql_query($sql, $conn); 
while ($row = mysql_fetch_assoc($result)) { 
 echo("ISBN: " . htmlspecialchars($row['ISBN']) . 
 ", Title: " . htmlspecialchars($row['book_title']) 
. ""); 
} 
mysql_free_result($result); 
mysql_close(); 
?> 
Thiết kế và lập trình Web 
51 
Xử lý kết quả truy vấn 
 Giải phóng bộ nhớ liên quan đến kết quả truy vấn 
– mysql_free_result($result) 
 Số ID của lần gọi INSERT cuối cùng nếu insert vào 
table có primary key kiểu auto_increment 
– int mysql_insert_id() 
Thiết kế và lập trình Web 
Hiển thị Tiếng Việt 
Phần sử dụng CSDL MySQL, phải đảm bảo: 
– Khai báo câu lệnh mysql_query(“ SET NAMES ‘utf8’ ”); 
trước khi gọi thực thi một truy vấn mysql_query($sql); 
 Khai báo trong phần của trang 
– <meta http-equiv="Content-Type" content="text/html; 
charset=utf-8"> 
 Lưu tệp với mã UTF-8 
52 
Thiết kế và lập trình Web 
Hiển thị Tiếng Việt 
- Phần sử dụng CSDL MySQL, phải đảm bảo: 
Khai báo lệnh mysql_query(“SET NAMES ‘utf8’”) trước lệnh 
mysql_query($sql); với $sql là một câu lệnh Select. 
Ví dụ: 
$sql = “Select ..”; 
mysql_query(“SET NAMES ‘utf8’”); //(*) 
$result = mysql_query($sql); 
if(!$result) { echo “Record not found!”; } 
else { 
while($row = mysql_fetch_array($result)){ 
 echo $row[‘firstField'] . " " 
.$row[‘secondField'].””;} 
} 
Thiết kế và lập trình Web 
Các hàm về cơ sở dữ liệu MySQL (thư viện 
chuẩn) 
54 
Thiết kế và lập trình Web 
55 
Thiết kế và lập trình Web 
Bài tập áp dụng 
 Tạo 1 trang web với hộp thoại nhập liệu username và 
password. 
 Nếu người sử dụng nhập thông tin 
username/password thì thực hiện kiểm tra các thông 
tin đã nhập có tồn tại trong bảng “users" của cơ sở dữ 
liệu “qlnv" thì xuất ra thông báo "welcome, username" 
với kiểu chữ Tahoma, màu đỏ. Ngược lại nếu nhập 
sai thì xuất thông báo "Username hoặc password sai. 
Vui lòng nhập lại." 
56 
Thiết kế và lập trình Web 
Bài tập áp dụng 
 Trang login.html 
57 
Thiết kế và lập trình Web 
Bài tập áp dụng 
 Trang checklogin.php 
58 
Thiết kế và lập trình Web 
Bài tập áp dụng 
 Thay đổi để truy vấn thông tin người dùng từ bảng 
trong CSDL. 
59 

File đính kèm:

  • pdfbai_giang_thiet_ke_va_lap_trinh_web_bai_8_php_mysql.pdf