Web nội dung tĩnh
 Các trang web bằng HTML có nội dung cố định
 Chỉ thay đổi khi người quản trị cập nhật lại nội dung
 Người dùng không thể tương tác và thay đổi nội
dung của trang web
 Không thể tuỳ biến nội dung trang web tuỳ theo thời
gian, người dùng,… hay các điều kiện khác
Web nội dung động:
 Lập trình để sinh ra mã HTML
bằng các ngôn ngữ web
 Có thể tuỳ biến nội dung trang
web tuỳ theo thời gian, người
dùng,… hay các điều kiện khác
                
              
                                            
                                
            
 
            
                 44 trang
44 trang | 
Chia sẻ: candy98 | Lượt xem: 972 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang tài liệu Bài giảng Cơ sở dữ liệu (Database) - Chương 5: Tích hợp cơ sở dữ liệu trong các ứng dụng - Vũ Hải, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 5: Tích hợp cơ sở dữ liệu 
trong các ứng dụng
1
PHP & MYSQL
TRONG ỨNG DỤNG WEB
2
Sơ lược về web
 Các trang web hiển thị trên trình duyệt được mô tả bằng ngôn ngữ 
HTML
 HTML là một ngôn ngữ đánh dấu, dùng các thẻ (tag) và thuộc tính 
(attribute) để mô tả các đối tượng trong văn bản cần hiển thị
 Mỗi đối tượng được bao bởi một thẻ mở và một thẻ đóng 
. Nếu trong đối tượng không chứa gì, có thể viết gộp thẻ 
đóng và thẻ mở làm một: 
 Thuộc tính được định nghĩa trong thẻ mở:
...
 Các đối tượng có thể được định nghĩa lồng nhau
3
Cấu trúc một trang web
 Một trang web là một file văn bản có cấu trúc cơ bản như sau:
 
Tiêu đề trang web
Nội dung
 Các thẻ cơ bản:
 , , , 
4
Web nội dung tĩnh
 Các trang web bằng HTML có nội dung cố định
 Chỉ thay đổi khi người quản trị cập nhật lại nội dung
 Người dùng không thể tương tác và thay đổi nội 
dung của trang web
 Không thể tuỳ biến nội dung trang web tuỳ theo thời 
gian, người dùng, hay các điều kiện khác
Web 
Service
(Apache, IIS,)
Web 
Browser
(Firefox, Chrome, 
IE, Webkit,)
network
5
Web nội dung động
Script 
Engine
(PHP, ASP, JSP,)
Web 
Service
(Apache, IIS,)
Web 
Browser
(Firefox, Chrome, 
IE, Webkit,)
Database 
Server
(MySQL, 
MSSQL,)
network
n
et
w
or
k
6
 Web nội dung động:
 Lập trình để sinh ra mã HTML 
bằng các ngôn ngữ web
 Có thể tuỳ biến nội dung trang 
web tuỳ theo thời gian, người 
dùng, hay các điều kiện khác
search for all books  search.php
result in html 
format
list all books 
Giới thiệu PHP
 PHP
 Một ngôn ngữ rất phổ biến để lập trình web
 Ngôn ngữ dạng script khá gần với C
 Nguyên tắc hoạt động:
 Sinh ra mã HTML của trang web bằng các hàm
print(), echo()
 Chạy trực tiếp không qua biên dịch
 Mã lệnh PHP nằm trong thẻ
<?php
// ...
?> 7
Ví dụ một PHP script
<?php
$title = 'Tiêu đề trang web';
$logo_img = 'logo.jpg';
?>
Nội dung
" />
8
Một số khái niệm của PHP
 Biến:
 Dùng dấu $ trước tên, không cần khai báo, 
không có kiểu cố định
 $x = 100;
$x = 'Value: ' . $x;
 Mảng:
 for ($i=0; $i<10; $i++)
$a[$i] = 20*$i;
9
Một số khái niệm của PHP
 Chuỗi ký tự: dùng '...' hoặc "..."
 $s1 = '$100';
$s2 = "Price: $s1"; 
print('' . $s2 . '');
Price: $100
10
Tham số của trang web với 
phương thức GET
 Khái niệm:
 Tương tự như việc các 
chương trình có tham số 
từ dòng lệnh, các trang 
web cũng có các tham 
số được cho ở URL
 PHP cho phép sử dụng các tham số này thông qua mảng
$HTTP_GET_VARS (với chỉ số là tên của tham số)
 Ví dụ:
print('ID: ' . $HTTP_GET_VARS['ID'] . '' .
'Name: ' . $HTTP_GET_VARS['Name'] . '' .
'Sex: ' . $HTTP_GET_VARS['Sex']);
11
SỬ DỤNG MYSQL TRONG PHP
12
MySQL với PHP
 PHP cung cấp sẵn một thư viện để truy cập 
các CSDL sử dụng MySQL
 Các tính năng và cách sử dụng 
 Thiết lập kết nối
 Thực hiện các câu truy vấn
 Lấy kết quả
 Kiểm tra lỗi
13
Thiết lập và đóng kết nối
 Thiết lập kết nối:
 mysql_connect($server, 
[$username, $password])
 Trả về kết nối được thiết lập
 Chọn CSDL làm việc:
 mysql_select_db($db_name, 
[$conn])
 Đóng kết nối:
 mysql_close($conn)
14
 $server = '192.168.1.50';
$usr = 'abc';
$pwd = '12345';
$db_name = 'myweb';
$conn = mysql_connect($server, 
$usr, $pwd);
if ($conn == null) 
exit('Database error');
mysql_select_db($db_name);
// Do stuff...
mysql_close($conn);
Kiểm tra lỗi
 Dùng các hàm sau để lấy thông tin về lỗi:
 Mã lỗi: 
int mysql_errno($conn)
 Thông điệp lỗi: 
string mysql_error($conn)
15
Kiểm tra lỗi
 Ví dụ:
 $conn = mysql_connect($server, $usr, 
$pwd);
if ($conn == null) {
print('Error ' . mysql_errno($conn) .
': ' . mysql_error($conn));
exit(1);
}
16
Thực hiện câu truy vấn
 Để thực hiện câu truy vấn, dùng hàm:
 $result = mysql_query($query, [$conn])
 $query: chuỗi ký tự chứa câu truy vấn
 $conn: kết nối đã được thiết lập
 Kết quả trả về:
 Nếu xảy ra lỗi, $result = FALSE
 Nếu thành công, tuỳ thuộc câu truy vấn
 SELECT: trả kết quả vào biến $result. 
 INSERT, UPDATE, DELETE, DROP: $result=TRUE
17
Lấy kết quả trả về của câu lệnh 
SELECT
 Sau khi thực hiện câu truy vấn, gọi hàm sau 
để lấy từng hàng kết quả:
 array mysql_fetch_array($result, 
$type)
 $type: kiểu chỉ số mảng
 MYSQL_ASSOC: chỉ số bằng tên thuộc tính
 MYSQL_NUM: chỉ số bằng số thứ tự
 MYSQL_BOTH: cả hai chỉ số
18
Lấy kết quả trả về của câu lệnh 
SELECT
 Lấy về giá trị 1 thuộc tính:
 mysql_result($result,$row,$field)
 $row: số dòng. Bắt đầu = 0.
 $field: thuộc tính cần lấy giá trị. 
 Field offset
 Field name
 Table.fieldname
19
Lấy kết quả trả về của câu lệnh 
SELECT
 Cuối cùng, kết thúc và giải phóng bộ nhớ 
đệm chứa kết quả:
 mysql_free_result($result)
 Di chuyển con trỏ trong kết quả:
 mysql_data_seek($result, $row_num)
20
Các thông tin về kết quả trả về
 Số thuộc tính (trường) của kết quả:
 int mysql_num_fields($result)
 Số hàng:
 int mysql_num_rows($result)
21
Các thông tin khác
 ID của dữ liệu mới được thêm
 int mysql_insert_id($conn)
 ID phải được định nghĩa với thuộc tính 
AUTO_INCREMENT
 $sql = "INSERT INTO person VALUES 
('Berge','Refsnes','Sandnes','17')";
$result = mysql_query($sql,$con);
echo "ID of last inserted record is: " . mysql_insert_id();
22
Các thông tin khác
 Số hàng chịu ảnh hưởng của thao tác trước 
(câu lệnh INSERT, UPDATE,)
 int mysql_affected_rows($conn)
 mysql_select_db("mydb");
mysql_query("DELETE FROM mytable WHERE id < 5");
$rc = mysql_affected_rows();
echo "Records deleted: " . $rc;
23
Ví dụ - SELECT
$result = mysql_query(‘select ID, NICKNAME, NAME from 
USER’, $conn);
$num_rows = mysql_num_rows($result);
print('Number of rows: ' . $num_rows . '');
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{
print('ID: ' . $row['ID'] . ', ' .
'Nickname: ' . $row['NICKNAME'] . ', ' .
'Name: ' . $row['NAME'] . '');
}
mysql_free_result($result);
24
Ví dụ - INSERT
if (mysql_query("insert into
USER(username, password, level)
values('superhero', 'chipchip', 3)", $conn)
== FALSE) handle_error($conn);
print(mysql_affected_rows($conn) .
' rows added');
print('ID of inserted user: ' .
mysql_insert_id($conn));
25
Ví dụ - UPDATE
if (mysql_query('update USER
set level = 5
where id in (2, 3, 4)', $conn) 
== FALSE)
handle_error($conn);
print(mysql_affected_rows($conn) .
' rows updated');
26
SỬ DỤNG MYSQL TRONG PHP
VÍ DỤ
27
Ví dụ 1
 Tạo một cơ sở dữ liệu Future, chứa bảng 
Friend.
 Đọc vào và hiển thị nội dung của bảng 
Friend trên giao diện Web
28
Ví dụ 1
 Tạo một cơ sở dữ liệu Future, chứa bảng 
Friend.
 Sử dụng trực tiếp trên MySQL Query Browser
29
Ví dụ 1
 Tạo một cơ sở dữ liệu Future, chứa bảng 
Friend.
 Sử dụng trực tiếp trên MySQL Query Browser
30
Ví dụ 1
 PHP script:
31
Ví dụ 1
 PHP script:
32
Ví dụ 1
33
Ví dụ 1
34
Ví dụ 1
35
Ví dụ 2
 Thêm vào dữ liệu cho bảng Friend từ HTML 
form
36
Ví dụ 2
37
Ví dụ 2
 All-in-one
38
39
Ví dụ 2
 All-in-one
40
Ví dụ 2
 All-in-one
41
Ví dụ 2
 All-in-one
42
Ví dụ 2
 All-in-one
43
Ví dụ 2
 All-in-one
Bài tập
1. Định nghĩa một quan hệ SinhVien, sau đó 
viết một chương trình PHP thêm vào CSDL 
một sinh viên và in ra ID của sinh viên vừa 
được thêm
2. Viết chương trình PHP nhập ID của một 
sinh viên và in ra thông tin của sinh viên đó
3. Viết chương trình PHP nhập tên của sinh 
viên và in ra thông tin những người có tên 
như đã nhập 44