1. Trang chủ
  2. » Công Nghệ Thông Tin

bài 2 các kỹ thuật lập trình mysql với php nâng cao

37 671 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao
Chuyên ngành Kỹ thuật lập trình PHP với MySQL
Thể loại Bài giảng
Định dạng
Số trang 37
Dung lượng 494,46 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Phân biệt khi nào sử dụng PDO và mở rộngmysqli Cách sử dụng câu lệnh dựng sẵn khi làm việc với PDO Cách sử dụng chế độ hiển thị lỗi Cách sử dụng mysqli trong cả hai hướng lập trình hướng

Trang 1

Bài 2

Các kỹ thuật lập trình MySQL

với PHP nâng cao

Trang 2

Phân biệt khi nào sử dụng PDO và mở rộng

mysqli

Cách sử dụng câu lệnh dựng sẵn khi làm việc với PDO

Cách sử dụng chế độ hiển thị lỗi

Cách sử dụng mysqli trong cả hai hướng lập

trình hướng đối tượng và hướng cấu trúc

Mục tiêu

Bài 2 - Các kỹ thuật lập trình MySQL với PHP nâng cao 2

Trang 4

Làm việc với truy vấn dựng sẵn

Ưu nhược điểm của PDO

Thiết lập chế độ hiển thị lỗi cho PDO

Làm việc với PDO

Bài 2 - Các kỹ thuật lập trình MySQL với PHP nâng cao 4

Trang 5

Ưu điểm:

Được tích hợp trong PHP phiên bản 5.1 trở lên và

dùng được cho phiên bản 5.0.

Cung cấp giao tiếp hướng đối tượng.

Cung cấp một giao tiếp nhất quán cho phép lưu

chuyển dữ liệu giữa các hệ cơ sở dữ liệu khác nhau

như Oracle, DB2, Microsoft SQL Server, PostgreSQL Tận dụng hầu hết ưu điểm các tính năng mới của

MySQL phiên bản 4.1.3 trở lên.

PDO (PHP Data Object)

Trang 6

PDO (PHP Data Object)

Bài 2 - Các kỹ thuật lập trình MySQL với PHP nâng cao 6

Trang 7

Ưu điểm:

Được tích hợp trong PHP phiên bản 5 trở lên.

Hỗ trợ cả giao tiếp hướng đối tượng và giao tiếp kiểu cấu trúc.

Tận dụng tất cả các tính năng mới của MySQL phiên bản 4.1.3 trở lên.

Trang 8

lastInsertId()

Một số phương thức của lớp PDO

Bài 2 - Các kỹ thuật lập trình MySQL với PHP nâng cao 8

Trang 10

Sử dụng phương thức fetchAll để trả về tập kết quả:

Ví dụ

Bài 2 - Các kỹ thuật lập trình MySQL với PHP nâng cao 10

$query = 'SELECT * FROM products' ;

$statement = $db -> prepare ( $query );

$statement -> execute ();

$products = $statement -> fetchAll ();

$statement -> closeCursor ();

foreach ($products as $product) {

echo $product[ 'productName' ] '<br />' ;

}

Trang 11

Sử dụng phương thức fetch để duyệt qua một

tập kết quả:

Ví dụ

$query = 'SELECT * FROM products' ;

$statement = $db -> prepare ( $query );

$statement -> execute ();

$product = $statement -> fetch (); // lấy bản ghi đầu tiên

while ($product ! = null) {

echo $product[ 'productName' ] '<br />' ;

$product = $statement -> fetch (); // lấy bản ghi tiếp theo

}

$statement -> closeCursor ();

Trang 12

$query = 'SELECT * FROM products

WHERE categoryID = :categoryid AND listPrice > :price' ;

$statement = $db -> prepare ( $query );

$statement -> bindValue ( ':categoryid' , $category_id );

$statement -> bindValue ( ':price' , $price );

$statement -> execute ();

$products = $statement -> fetchAll ();

$statement -> closeCursor ();

Trang 13

Sử dụng tham số dấu hỏi (question mark parameter)

$query = 'SELECT * FROM products

WHERE categoryID = ? AND listPrice > ?' ;

$statement = $db -> prepare ( $query );

$statement -> bindValue ( 1 , $category_id );

$statement -> bindValue ( 2 , $price );

$statement -> execute ();

$products = $statement -> fetchAll ();

$statement -> closeCursor ();

Trang 14

Thay đổi dữ liệu

Bài 2 - Các kỹ thuật lập trình MySQL với PHP nâng cao 14

// Thiết lập và thực thi câu lệnh

$query = 'INSERT INTO products

(categoryID, productCode, productName, listPrice)

VALUES

(:category_id, :code, :name, :price)' ;

$statement = $db -> prspare ( $query );

$statement -> bindValue ( ':categoryid' , $category_id );

$statement -> bindValue ( ':code' , $code );

$statement -> bindValue ( ':name' , $name );

$statement -> bindValue ( ':price' , $price );

$success = $statement -> execute ();

Trang 15

Thay đổi dữ liệu

$row_count = $statement -> rowCount ();

Trang 16

ERRMODE_WARNING

ERRMODE_EXCEPTION

Ba chế độ xử lý lỗi của PDO

Bài 2 - Các kỹ thuật lập trình MySQL với PHP nâng cao 16

Trang 17

Sử dụng hàm khởi tạo của lớp PDO để thiết lập chế độ xử lý lỗi:

$db = new PDO($dsn, $username, $password, $options);

} catch (PDOException $e) {

$error_message = $e -> getMessage ();

echo "<p>Error connecting to database: $error_message

</p>" ;

Trang 18

Sử dụng phương thức setAttribute để thiết lập

chế độ xử lý lỗi:

Sử dụng cặp lệnh try/catch để bắt các đối tượng PDOException:

Ví dụ

Bài 2 - Các kỹ thuật lập trình MySQL với PHP nâng cao 18

$db -> setAttribute ( PDO :: ATTRERRMODE , PDO :: ERRMODE_EXCEPTION );

try {

$query = 'SELECT * FROM product' ;

$statement = $db -> prepare ( $query );

Trang 19

Kết nối với CSDL

Truy vấn và cập nhật dữ liệu

Làm việc với truy vấn dựng sẵn

So sánh giao diện hướng đối tượng và hướng

cấu trúc

Làm việc với mysqli

Trang 20

Kết nối đến cơ sở dữ liệu MySQL (kiểu hướng

Trang 21

Connect_error

Hai thuộc tính của đối tượng mysqli

dùng để kiểm tra lỗi kết nối

Trang 22

Kiểm tra lỗi kết nối (kiểu hướng đối tượng):

Hướng dẫn kiểm tra lỗi kết nối (kiểu cấu trúc):

Trang 23

Phương thức của lớp mysqli trả về tập kết quả:

Thuộc tính và phương thức của lớp

mysqli_resultset:

Lớp mysqli

query($select_statement) Thực thi câu lệnh SQL trong ngoặc và trả về đối

tượng mysqli cho tập kết quả Nếu không có kết quả nào được tìm thấy, hàm sẽ trả về giá trị FALSE

Thuộc tính/Phương thức Giải thích

num_rows Số bản ghi của tập kết quả.

Fetch_assoc() Trả về tập kết quả là một mảng liên kết

Trang 24

Hướng dẫn thực thi câu lệnh SELECT:

Ví dụ

Bài 2 - Các kỹ thuật lập trình MySQL với PHP nâng cao 24

// Thực thi câu lệnh

$category_id = 2 ;

$query = "SELECT * FROM products

WHERE categoryID = $category_id";

$result = $db -> query ( $query );

// Kiểm tra tập kết quả trả về

if ($result == false) {

$error_message = $db -> error ;

echo "<p>An error occurred: $error_message</p>" ; exit{);

}

// Lấy ra số dòng có trong tập kết quả

$row_count = $result -> num_rows ;

Trang 25

Hướng dẫn hiển thị kết quả:

Ví dụ

<?php for ($i = 0 ; $i < $row_count; $i++) :

$product = $result -> fetch_assoc ();

?>

< tr >

< tdx ? php echo $product [ 'productID1 ] ; ?></td>

<tdx?php echo $product ['categoryID1 ] ; ?></ td >

< tdx ? php echo $product [ 'productCode' ] ; ?></td>

< tdx ? php echo $product [ 'productName' ] ; ?x/td>

< tdx ? php echo $product [ 'listPrice' ] ; ?x/td>

</ tr >

<?php endfor; ?>

Trang 26

Giải phóng tài nguyên được dùng bởi tập kết

quả và kết nối cơ sở dữ liệu:

Ví dụ

Bài 2 - Các kỹ thuật lập trình MySQL với PHP nâng cao 26

$result -> free (); // Giải phóng tập kết quả

$db -> close (); // Giải phóng kết nối tới cơ sở dữ liệu

Trang 27

Thuộc tính Giải thích

affectedrows Trả về số hàng bị ảnh hưởng Nếu không có hàng bị ảnh hưởng,

thuộc tính này trả về số không

insert_id Trả về ID được tự động tạo ra trong truy vấn trước đó Nếu

không có ID được tạo ra, thuộc tính này trả về số không

error Trả về thông báo lỗi nếu có lỗi xảy ra Nếu không, nó sẽ trả về

một chuỗi rỗng

errno Trả về số nguyên ký hiệu mã lỗi nếu có lỗi Nếu không có lỗi, trả

về 0

Các thuộc tính của lớp mysqli

dùng để kiểm tra kết quả

Trang 28

$query = "INSERT INTO products

(categoryID, productCode, productName, listPrice) VALUES

($category_id, '$code', '$name', $price)"; $success =

$db->query($query);

Trang 30

Phương thức của lớp mysqli:

Làm việc với câu lệnh SQL dựng sẵn

Bài 2 - Các kỹ thuật lập trình MySQL với PHP nâng cao 30

Trang 31

Thực thi một câu lệnh dựng sẵn trả về một tập kết quả:

Ví dụ

$category_id = 2 ;

$query = "SELECT productCode, productName, listPrice

FROM products WHERE categoryID = ?" ;

$statement = $db -> prspare ( $query );

$statement -> bind_param ( "i" , $category_id );

$statement -> bind_result ( $code , $name , $listPrice );

$statement -> execute ();

Trang 33

Thực thi câu lệnh SQL dựng sẵn để thay đổi dữ liệu:

$query = "INSERT INTO products

(categoryID, productCode, productName, listPrice)

VALUES

(?, ?, ?, ?)" ;

$statement = $db -> prspars ( $query );

$statement -> bind_param ( "issd" , $category_id , $code , $name ,

$price );

Trang 35

Câu lệnh kiểu hướng đối tượng

và hướng cấu trúc

$result = $db -> query ( $query );

$result = mysqli_query ( $db , $query );

$error_message = $db -> srror ;

$error_message = mysqlierror ( $db );

$row = $result -> fetch_assoc ();

$row = mysqli_fetch_assoc ( $result );

$row_count = $result -> num_rows ;

$row_count = mysqlinumrows ( $result );

$count = $db -> affected_rows ;

$count = mysqliaffectsdrows ( $db );

Trang 36

Câu lệnh kiểu hướng đối tượng

và hướng cấu trúc

Bài 2 - Các kỹ thuật lập trình MySQL với PHP nâng cao 36

$result -> frees ();

mysqli_free_result ( $result );

$statement = $db -> prepare ( $query );

$statement = mysqli_prepare ( $db , $query );

$statement -> bind param ( "i" , $category_id );

mysqli_bind_param ( $statement , "i" , $category_id );

$success = $statement -> execute ();

$success = mysqlisxscute ( $statement );

$db -> close ();

mysqliclose ( $db );

Trang 37

MySQL cung cấp giao diện lập trình ứng dụng

(API) cho biết loại ứng dụng nào có thể làm việc với MySQL

PHP cung cấp ba mở rộng để làm việc với thư

viện API của MySQL: mysql, mysqli, PDO

Khi sử dụng PDO để thực thi các câu lệnh SQL, bạn có thể lựa chọn ba chế độ bắt và xử lý lỗi.

So với câu lệnh SQL động, câu lệnh SQL dựng

sẵn giúp tăng hiệu năng và độ bảo mật

Tổng kết bài học

Ngày đăng: 23/05/2014, 17:29

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w