08 webcourse - php ket noi csdl
TRANSCRIPT
Lập trình và Thiết kế Web 1
© 2009 Khoa Công nghệ thông tin
Khoa CNTT – ĐH.KHTN
Bai 8
Thao tác CSDL với PHP
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Nội dung
Các bước thao tác với CSDL
Một số vấn đề khi thao tác với CSDL
Một số ví dụ minh họa:
– Tìm kiếm và sắp xếp
– Tổng hợp Thêm, Xóa, Sửa
– Phân trang dữ liệu
Thao tác với các Hệ Quản trị CSDL khác
2
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Nội dung
Các bước thao tác với CSDL
Một số vấn đề khi thao tác với CSDL
Một số ví dụ minh họa:
– Tìm kiếm và sắp xếp
– Tổng hợp Thêm, Xóa, Sửa
– Phân trang dữ liệu
Thao tác với các Hệ Quản trị CSDL khác
3
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Các bước thao tác CSDL trong PHP
1. Kết nối với CSDL
2. Xây dựng câu truy vấn dữ liệu
3. Thực thi câu truy vấn
4. Xử lí kết quả trả về từ câu truy vấn SELECT
5. Ngắt kết nối với CSDL
4
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Các bước thao tác CSDL trong PHP
1. Kết nối với CSDL
2. Xây dựng câu truy vấn dữ liệu
3. Thực thi câu truy vấn
4. Xử lí kết quả trả về từ câu truy vấn SELECT
5. Ngắt kết nối với CSDL
5
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
1. Tạo Kết nối CSDL
Kết nối MySQL và Chọn CSDL
resource mysql_connect(string host, string LoginName, string password)
int mysql_select_db(string dbName, resource connection)
<?php
$connection = mysql_connect(“localhost",“root”,“root");
mysql_select_db(“TestDB", $connection);
?>
Database Application
Connection
6
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN 7
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Các bước thao tác CSDL trong PHP
1. Kết nối với CSDL
2. Xây dựng câu truy vấn dữ liệu
3. Thực thi câu truy vấn
4. Xử lí kết quả trả về từ câu truy vấn SELECT
5. Ngắt kết nối với CSDL
8
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
www.example.com
Webserver
2. Xây dựng câu truy vấn
Internet or Intranet
Yêu cầu trang xlDangnhap.php
Textbox : txtDangnhap
Password Box: txtMatkhau
txtMatkhau = 123
txtDangnhap = admin
Database
Server
strSQL = “SELECT *
FROM Users
WHERE UserName =
„admin‟ and Password =
„123‟ ”
9
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
2. Xây dựng câu truy vấn (tt)
SQL Ví dụ
INSERT strSQL = “ INSERT INTO Users (UserName, Password) VALUES („admin',„123')“
DELETE strSQL = “ DELETE FROM Users WHERE UserName = „lvminh‟ “
UPDATE strSQL = “ UPDATE Users SET Password = „abc' WHERE UserName = „admin‟ ”
SELECT strSQL = “ SELECT * FROM Users WHERE UserName = „admin‟ ”
$sUserName = “admin”;
$sPassword = “123”;
$strSQL ?
10
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
SELECT [Liệt kê thuộc tính]
FROM [Danh sách các bảng]
WHERE [ĐK Kết+lọc]
Group by [Thuộc tính Gom nhóm]
Order by [Thuộc tính sắp thứ tự]
HAVING [ĐK trên nhóm]
11
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Các bước thao tác CSDL trong PHP
1. Kết nối với CSDL
2. Xây dựng câu truy vấn dữ liệu
3. Thực thi câu truy vấn
4. Xử lí kết quả trả về từ câu truy vấn SELECT
5. Ngắt kết nối với CSDL
12
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
3. Thực thi câu truy vấn
<?php
$strSQL = “INSERT INTO Users (UserName, Password) VALUES („admin',„123„)”;
mysql_query($strSQL);
?>
Application
Connection 011010011 011010011
Query
Database
resource mysql_query(string SQL_cmd, resource connection)
Insert Delete Update
<?php
$strSQL = “SELECT * FROM Users”;
$result = mysql_query($strSQL);
?>
Select
13
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Các bước thao tác CSDL trong PHP
1. Kết nối với CSDL
2. Xây dựng câu truy vấn dữ liệu
3. Thực thi câu truy vấn
4. Xử lý kết quả trả về từ câu truy vấn SELECT
5. Ngắt kết nối với CSDL
14
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
4. Xử lý kết quả trả về
UserName Password
A AA
B BB
C CC
D DD
… …
X XX
Y YY
Z ZZ
Hiển thị dữ liệu trả về
– Sử dụng hàm
$row = mysql_fetch_array($result)
– Số lượng FIELD
$num = mysql_num_fields($result);
– Truy cập đến từng FIELD
echo $row[“UserName”];
Hoặc
echo $row[0];
cursor
Ví dụ:
CSDL BookstoreDB – Bảng T_Users
Xuất records từ CSDL ra trang HTML
15
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN 16
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Các bước thao tác CSDL trong PHP
1. Kết nối với CSDL
2. Xây dựng câu truy vấn dữ liệu
3. Thực thi câu truy vấn
4. Xử lí kết quả trả về từ câu truy vấn SELECT
5. Ngắt kết nối với CSDL
17
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
5. Ngắt kết nối dữ liệu
bool mysql_close(resource connection) ;
Tự động thực thi khi kết thúc mã lệnh nhờ cơ chế tự động
thu rác (garbage collector) – PHP4,5
18
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Tổng hợp các bước thao tác CSDL MySQL
<?php
// 1. Ket noi CSDL
$connection = mysql_connect(“hostname",“username",“password");
mysql_select_db(“database_name", $connection);
// 2. Chuan bi cau truy van & 3. Thuc thi cau truy van
$strSQL = "SELECT * FROM TableName”;
$result = mysql_query($strSQL);
// 4.Xu ly du lieu tra ve
while ($row = mysql_fetch_array($result))
{
for ($i=0; $i<mysql_num_fields($result); $i++)
echo $row[$i] . " ";
}
// 5. Dong ket noi
mysql_close($connection);
?>
19
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Một số hàm thao tác với CSDL MySQL
int mysql_data_seek(resource result_set, int row)
array mysql_fetch_row(resource result_set)
object mysql_fetch_object(resource result_set, int result_type)
int mysql_free_result(resource result_set)
int mysql_num_rows(resource result_set)
resource mysql_pconnect(string host:port, string user, string
password)
resource mysql_unbuffered_query(string query, resource connection)
object mysql_fetch_field(resource result_set, int attribute_number)
int mysql_affected_rows(resource connection)
int mysql_insert_id(resource connection)
20
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Nội dung
Các bước thao tác với CSDL
Một số vấn đề khi thao tác với CSDL
Một số ví dụ minh họa:
– Tìm kiếm và sắp xếp
– Tổng hợp Thêm, Xóa, Sửa
– Phân trang dữ liệu
Thao tác với các Hệ Quản trị CSDL khác
21
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN 22
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Một số vấn đề - MySQL & Font Unicode
Font UNICODE
<?php
mysql_query(“set names „utf-8‟”);
?>
Encode
Decode
23
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Một số vấn đề - Xử lý lỗi
int mysql_errno(resource connection)
string mysql_error(resource connection)
<?php
function showerror( ) {
die("Error " . mysql_errno( ) . " : " . mysql_error( ));
}
if (!($connection = @mysql_connect("localhost", "fred", "shhh")))
die("Could not connect");
If (!(mysql_select_db("winestor", $connection)))
showerror( );
?>
24
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Các bước thao tác CSDL trong PHP
1. Kết nối với CSDL
2. Xây dựng câu truy vấn dữ liệu
3. Thực thi câu truy vấn
4. Xử lí kết quả trả về từ câu truy vấn SELECT
5. Ngắt kết nối với CSDL
Trang chủ
Chi tiết
sản phẩm Quản lý
sản phẩm
Quản lý
Người dùng
…….
25
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Một số vấn đề - Include File
<?php
$hostName = "localhost";
$databaseName = "bookstoreDB";
$username = "root";
$password = "root";
?>
<?php
function showError( )
{
die("Error " . mysql_errno( ) . " : " . mysql_error( ));
}
?>
<?php
include „db.inc‟;
include „error.inc‟;
?>
db.inc
error.inc
26
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Nội dung
Các bước thao tác với CSDL
Một số vấn đề khi thao tác với CSDL
Một số ví dụ minh họa:
– Tìm kiếm và sắp xếp
– Tổng hợp Thêm, Xóa, Sửa
– Phân trang dữ liệu
Thao tác với các Hệ Quản trị CSDL khác
27
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Nội dung
Các bước thao tác với CSDL
Một số vấn đề khi thao tác với CSDL
Một số ví dụ minh họa:
– Tìm kiếm và sắp xếp
– Tổng hợp Thêm, Xóa, Sửa
– Phân trang dữ liệu
Thao tác với các Hệ Quản trị CSDL khác
28
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Một số ví dụ: Trình bay dữ liệu ra trang Web – Tìm kiếm & Sắp xếp
Tìm kiếm
Xuất dữ liệu thoả điều kiện
Sắp xếp records theo tên trường
Cho phép người dùng chon cột để sắp xếp
29
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Nội dung
Các bước thao tác với CSDL
Một số vấn đề khi thao tác với CSDL
Một số ví dụ minh họa:
– Tìm kiếm và sắp xếp
– Tổng hợp Thêm, Xóa, Sửa
– Phân trang dữ liệu
Thao tác với các Hệ Quản trị CSDL khác
30
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Một số ví dụ: Tổng hợp Thêm, Xóa va Sửa dữ liệu
Tổng hợp Liệt kê + Thêm sách mới
Tổng hợp Liệt kê + Xóa sách
Tổng hợp Liệt kê + Cập nhật sách
31
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Nội dung
Các bước thao tác với CSDL
Một số vấn đề khi thao tác với CSDL
Một số ví dụ minh họa:
– Tìm kiếm và sắp xếp
– Tổng hợp Thêm, Xóa, Sửa
– Phân trang dữ liệu
Thao tác với các Hệ Quản trị CSDL khác
32
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Phân trang dữ liệu numRows
rowsPerPage
maxPage
pageNum
offset
33
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Phân trang dữ liệu
Trường hợp dữ liệu lấy về có quá nhiều mẫu tin (hiển thị bảng quá dài)
Chia dữ liệu hiển thị trên nhiều trang
– Tổng số kết quả trả về: $numRows
– Số kết quả hiển thị trên 1 trang: $rowsPerPage
– Tổng số trang hiển thị: $maxPage
$maxPage = ceil($numRows / $rowsPerPage);
– Số thứ tự trang hiển thị: $pageNum = 1,2,…
– Chỉ số kết quả bắt đầu trong trang thứ $pageNum:
$offset = ($pageNum - 1) * $rowsPerPage;
34
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Phân trang dữ liệu (tt)
Các bước thực hiện phân trang
–Tính các thông số phân trang ($rowsPerPage, $pageNum, $offset)
–Lấy thông tin cần hiển thị ($numRows)
–Hiển thị thông tin của trang hiện tại ($offset, $rowsPerPage)
–Tạo liên kết chỉ đến các trang ($maxPage $pageNum)
– Xem Ví dụ
(1) Select * From T_Book
(2) Select * From T_Book LIMIT $offset, $rowsPerPage
35
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Nội dung
Các bước thao tác với CSDL
Một số vấn đề khi thao tác với CSDL
Một số ví dụ minh họa:
– Tìm kiếm và sắp xếp
– Tổng hợp Thêm, Xóa, Sửa
– Phân trang dữ liệu
Thao tác với các Hệ Quản trị CSDL khác
36
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Thao tác với Microsoft SQL Server
<?php
// 1. Ket noi CSDL
$connection =
mssql_connect(“hostname",“username",“password");
mysql_select_db(“database_name", $connection);
// 2. Chuan bi cau truy van & 3. Thuc thi cau truy van
$strSQL = "SELECT * FROM TableName”;
$result = mssql_query($strSQL);
// 4.Xu ly du lieu tra ve
while ($row = mssql_fetch_array($result))
{
for ($i=0; $i<mssql_num_fields($result); $i++)
echo $row[$i] . " ";
}
// 5. Dong ket noi
mssql_close($connection);
?>
37
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Thao tác với Microsoft Access – Sử dụng ODBC
<?php
// 1. Ket noi CSDL
$connection = odbc_connect("mobileDB","","");
// 2. Chuan bi cau truy van & 3. Thuc thi cau truy van
$strSQL = "SELECT * FROM TableName”;
$result = odbc_exec($connection, $strSQL);
// 4.Xu ly du lieu tra ve
while (odbc_fetch_row($result))
{
for ($i=1; $i<=odbc_num_fields($result); $i++)
echo odbc_result($result, $i) . " ";
}
// 5. Dong ket noi
odbc_close($connection);
?>
38
Lập trình và Thiết kế Web 1 – Bài 9: Thao tác CSDL với PHP
© 2009 Khoa CNTT - ĐHKHTN
Thao tác với Microsoft Access – Sử dụng ADO <?php
// 1. Ket noi CSDL
$db = "db/bookStoreDB.mdb";
$conn = new COM("ADODB.Connection") ;
$sql = “DRIVER={Microsoft Access Driver(*.mdb)};DBQ=“ .
realpath($db) . “; uid=; pwd=;” ;
$conn->open($sql);
// 2. Chuan bi cau truy van & 3. Thuc thi cau truy van
$strSQL = "SELECT * FROM TableName”;
$rs = $conn->execute($strSQL);
// 4.Xu ly du lieu tra ve
while (!$rs->EOF) {
echo $rs->Fields[„FieldName']->Value . " ";
$rs->MoveNext() ;
}
// 5. Dong ket noi
$rs->Close() ;
$conn->Close() ;
?>
39