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

Bài giảng PHP (Hypertext Preprocessing) - Chương 5: PHP & CSDL

21 49 0

Đ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

Định dạng
Số trang 21
Dung lượng 444,29 KB

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

Nội dung

Bài giảng PHP (Hypertext Preprocessing) - Chương 5: PHP & CSDL trình bày các nội dung chính sau: Sử dụng PHP để kết nối với CSDL, PEAR DB, các chức năng nâng cao với PEAR DB,... Mời các bạn cùng tham khảo để nắm nội dung chi tiết.

Trang 2

V.1 Sử dụng PHP để kết nối với

CSDL

 Có 2 cách kết nối PHP với CSDL

– Sử dụng các hàm riêng cho từng loại CSDL

 Ưu điểm: Tốc độ cao do được thiết kế cho từng CSDL cụ thể Tận dụng được ưu điểm của từng loại CSDL

 Nhược điểm: Không có tính khả chuyển giữa các CSDL – Sử dụng các hàm độc lập CSDL (thư viện PEAR

DB)

 Ưu điểm: Có thể sử dụng trên nhiều CSDL khác nhau

 Nhược điểm: Chậm hơn phương pháp trên, không tận dụng được ưu điểm của từng CSDL

Trang 3

V.1 Sử dụng PHP để kết nối với CSDL

(2)

 Cài đặt thư viện PEAR

– Yêu cầu: PHP phiên bản 5.0

 Cấu hình Zend Studio để làm việc với PEAR DB

– Thêm vào file $Zend_dir/bin/php5/php.ini 2 dòng

 include_path=".;C:/php/pear"

 extension_dir="c:/php/ext"

– Copy file libMySQL.dll vào $Windows/$System (nếu bạn sử dụng IIS)

Trang 4

Các bước cài đặt kiểu mì ăn liền

 Cài IIS, cài Mysql 5.0, cài PHP

 Copy $\Mysql\bin\libMysql.dll đến

c:\windows\system32

 Copy PHP.rar đè lên thư mục c:/PHP

 Sửa nội dung c:\windows\system32\PHP.INI, thêm vào các dòng sau (để ở cuối file)

Trang 5

echo "<table border='1'>" ;

while ($row = $table->fetchRow()) {

Trang 6

V.2 PEAR DB (2)

V.2.1 Data source name

V.2.2 Kết nối với cơ sở dữ liệu V.2.3 Kiểm tra lỗi

V.2.4 Thực thi query

V.2.5 Lấy kết quả từ query

V.2.6 Giải phóng bộ nhớ

Trang 7

V.2.1 Data source name

 dsn=Data Source Name

Odbc ODBC Sybase SyBase Ifx Informix Fbsql FrontBase

Trang 8

V.2.2 Kết nối với cơ sở dữ liệu

 Khi đã có DSN, bạn có thể kết nối bằng hàm DB::connect với cú pháp sau:

– options có thể là 1 giá trị Boolean hoặc 1 mảng

 $db = DB::connect($dsn, array('debug' => 1,

'optimize' => 'portability' ));

Trang 9

V.2.3 Kiểm tra lỗi

 Các phương thức của DB trả về DB_ERROR nếu có lỗi trong quá trình thực hiện

 Bạn có thể kiểm tra 1 kết quả trả về có phải là lỗi không bằng hàm DB::isError();

 Nếu DB::isError() trả về true, kết quả trả về của bạn là lỗi, có thể xem thông báo lỗi bằng phương thức $tenbien-

Trang 10

V.2.4 Thực thi query

 Để thực thi query, sử dụng phương thức query() của Database Object (đối tượng trả về khi bạn kết nối thành công với CSDL bằng hàm DB::connect() );

Trang 11

V.2.5 Lấy kết quả từ query

$row = $result->fetchRow([ mode ]);

 Hàm fetchRow() trả về mảng các giá trị trên dòng hoặc DB_ERROR (nếu có lỗi)

Trang 12

V.2.5 Lấy kết quả từ query (2)

$row = $result->fetchRow([ mode ]);

 mode:

– DB_FETCHMODE_ORDERED: Các cột được liệt

kê trên $row theo thứ tự 0,1,2

– DB_FETCHMODE_ASSOC : Các cột được liệt kê với khóa là tên của các cột

– DB_FETCHMODE_OBJECT: Các cột được liệt

kê thành các trường của đối tượng

Trang 13

V.2.5 Lấy kết quả từ query (3)

<?php

require( "DB.php" );

$db = DB::connect( "mysql://root:root@localhost/dhxd" ); $table = $db->query( "select * from sv" );

Trang 14

$table = $db->query( "select * from sv" );

Trang 15

V.3 Các chức năng nâng cao với PEAR

Trang 16

V.3.1 Query template

 Để xây dựng các query, nếu dùng phép nối xâu kí tự rất dễ gây

nhầm lẫn do không nhìn thấy tổng thể của câu lệnh SQL (nhất là với các trường hợp có sử dụng dấu nháy)

 Trong trường hợp này, PHP cung cấp 1 công cụ hoạt động cho

phép truyền tham số trong câu lệnh SQL giống như lệnh printf, trong

đó sử dụng các ký hiệu

– ?: Cho số hoặc string (dấu nháy sẽ được bổ sung khi cần thiết)

– |: Cho số hoặc string (không sử dụng dấu nháy)

– &: Tên file (dùng cho các trường BLOB)

 <?php

require("DB.php" );

$db = DB::connect( "mysql://root:root@localhost/dhxd" );

$row = array("Nguyen Van" , "A" );

$db->query( "INSERT INTO sv (hodem, ten) VALUES(?,?)" , $row);

?>

Trang 17

V.3.2 Prepare/Execute

 Khi bạn thực hiện nhiều câu lệnh giống nhau, cách tốt nhất là dịch câu lệnh SQL trước khi thực hiện bằng phương thức prepare()

 Sau khi dịch SQL, bạn có thể thực hiện câu lệnh SQL bằng cách dùng 2 lệnh sau:

$response = $db->execute(compiled, values); (values: mảng 1 chiều các giá trị)

$responses = $db->executeMultiple(compiled, values); (values: mảng 2 chiều các dòng, mỗi dòng là 1

$rows=array( array("Nguyen Van" , "A" ),

array("Nguyen Van" , "B" ),

array("Nguyen Van" , "C" ),

array("Nguyen Van" , "D" ) );

$db->execute($complied, $row);

}

$db->executeMultiple($complied, $rows);

?>

Trang 19

V.3.4 Các thông tin trả về từ query()

Bạn có thể lấy thông tin về các dòng, cột kết quả trả về từ câu lệnh SQL qua các hàm numRows(), numCols(), tableInfo(), affectedRows()

<?php

require( "DB.php" );

$db = DB::connect( "mysql://root:root@localhost/dhxd" ); $table = $db->query( "SELECT * FROM sv" );

var_dump ($table->numRows());

var_dump ($table->numCols());

var_dump ($table->tableInfo());

$result = $db->query(

"INSERT INTO sv (hodem, ten) VALUES (?,?)" ,

array( "Nguyen Phu" , "Quang" ));

var_dump ($result);

var_dump ($db->affectedRows());

?>

Trang 21

V.3.6 Transaction

Nhiều cơ sở dữ liệu hỗ trợ Transaction safe, để sử dụng

transaction safe trong PHP, bạn sử dụng các lệnh commit(),

$result = $db->query( "DELETE FROM sv;" );

$db->rollback();

$db->autocommit = true;

?>

Ngày đăng: 11/01/2020, 18:58

TỪ KHÓA LIÊN QUAN