08 webcourse - php ket noi csdl

39
Lập trình và Thiết kế Web 1 © 2009 Khoa Công nghệ thông tin Khoa CNTT ĐH.KHTN Bi 8 Thao tác CSDL với PHP

Upload: lupron

Post on 01-Dec-2015

47 views

Category:

Documents


13 download

TRANSCRIPT

Page 1: 08 WebCourse - PHP Ket Noi CSDL

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

Page 2: 08 WebCourse - PHP Ket Noi CSDL

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

Page 3: 08 WebCourse - PHP Ket Noi CSDL

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

Page 4: 08 WebCourse - PHP Ket Noi CSDL

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

Page 5: 08 WebCourse - PHP Ket Noi CSDL

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

Page 6: 08 WebCourse - PHP Ket Noi CSDL

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

Page 7: 08 WebCourse - PHP Ket Noi CSDL

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

Page 8: 08 WebCourse - PHP Ket Noi CSDL

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

Page 9: 08 WebCourse - PHP Ket Noi CSDL

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

Page 10: 08 WebCourse - PHP Ket Noi CSDL

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

Page 11: 08 WebCourse - PHP Ket Noi CSDL

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

Page 12: 08 WebCourse - PHP Ket Noi CSDL

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

Page 13: 08 WebCourse - PHP Ket Noi CSDL

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

Page 14: 08 WebCourse - PHP Ket Noi CSDL

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

Page 15: 08 WebCourse - PHP Ket Noi CSDL

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

Page 16: 08 WebCourse - PHP Ket Noi CSDL

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

Page 17: 08 WebCourse - PHP Ket Noi CSDL

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

Page 18: 08 WebCourse - PHP Ket Noi CSDL

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

Page 19: 08 WebCourse - PHP Ket Noi CSDL

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

Page 20: 08 WebCourse - PHP Ket Noi CSDL

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

Page 21: 08 WebCourse - PHP Ket Noi CSDL

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

Page 22: 08 WebCourse - PHP Ket Noi CSDL

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

Page 23: 08 WebCourse - PHP Ket Noi CSDL

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

Page 24: 08 WebCourse - PHP Ket Noi CSDL

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

Page 25: 08 WebCourse - PHP Ket Noi CSDL

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

Page 26: 08 WebCourse - PHP Ket Noi CSDL

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

Page 27: 08 WebCourse - PHP Ket Noi CSDL

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

Page 28: 08 WebCourse - PHP Ket Noi CSDL

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

Page 29: 08 WebCourse - PHP Ket Noi CSDL

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

Page 30: 08 WebCourse - PHP Ket Noi CSDL

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

Page 31: 08 WebCourse - PHP Ket Noi CSDL

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

Page 32: 08 WebCourse - PHP Ket Noi CSDL

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

Page 33: 08 WebCourse - PHP Ket Noi CSDL

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

Page 34: 08 WebCourse - PHP Ket Noi CSDL

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

Page 35: 08 WebCourse - PHP Ket Noi CSDL

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

Page 36: 08 WebCourse - PHP Ket Noi CSDL

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

Page 37: 08 WebCourse - PHP Ket Noi CSDL

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

Page 38: 08 WebCourse - PHP Ket Noi CSDL

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

Page 39: 08 WebCourse - PHP Ket Noi CSDL

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