Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 41 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
41
Dung lượng
0,97 MB
Nội dung
Bài giảng PHÁT TRIỂN ỨNG DỤNG WEB Lê Đình Thanh Khoa Công nghệ Thông tin Trường Đại học Công nghệ, ĐHQGHN E-mail: thanhld@vnu.edu.vn Mobile: 0987.257.504 Chương Thao tác CSDL Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Nội dung • • • • • • Tổng quan Mơ hình ba tầng PDO Truy vấn theo liệu người dùng Truy cập đồng thời đến CSDL ORM Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Tổng quan • Các bước Kết nối đến máy chủ CSDL lựa chọn CSDL để làm việc Xây dựng truy vấn, cập nhật thực truy vấn, cập nhật Xử lý liệu kết trả thực truy vấn, cập nhật Đóng kết nối đến máy chủ sở liệu • Hệ quản trị CSDL o MySQL, PostgreSQL, Oracle, MS SQL, MongoDB … • Thư viện thao tác CSDL o PDO o ORM Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Mơ hình ba tầng • Tầng khách: trình diễn tương tác với người dùng • Tầng giữa: thực logic ứng dụng • Tầng CSDL: bao gồm hệ quản trị CSDL, CSDL ứng dụng Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Tầng CSDL • CSDL cho ứng dụng • Hệ quản trị CSDL quản lý CSDL ứng dụng Nhận truy vấn từ chương trình dịch tầng giữa, thao tác CSDL trả kết cho chương trình yêu cầu Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Sử dụng PDO - từ PHP trở - hướng đối tượng - sử dụng với hệ QTCSDL - nên dùng viết mã (Quá khứ: mysql, mysqli) Lê Đình Thanh, Bài giảng Phát triển ứng dụng web PHP Data Objects • PDO cung cấp giao diện chuẩn hóa, quán để thao tác với CSDL sử dụng PHP Dễ chuyển đổi CSDL Viết mã hiệu an tồn Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Nguyên lý hoạt động PDO sql PDO PDO result Database Driver dbms sql dbms result DBMS database Cần cài driver cho hệ QTCSDL sử dụng Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Cài đặt cấu hình • PDO • Cài đặt php5-mysql, • Cấu hình extension=pdo.so php.ini • Trình điều khiển cho MySQL • Cài đặt pdo-mysql • Cấu hình extension=pdo_mysql.so php.ini Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Tạo truy vấn theo liệu nhập • PHP $sql = “select … from … where thuoctinh=\’” + clean($bien) + “\’”; $stmt = $db->prepare("SELECT … FROM … WHERE thuoctinh=?"); $stmt->bindValue(1, $bien); $stmt->execute(); Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Xuất liệu while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo “{prop: ” $row["thuoctinh“] “}”; } Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Vấn đề truy cập đồng thời • Nhiều người truy cập CSDL đồng thời dẫn đến tình sau: Mất cập nhật: Người dùng A đọc giá trị từ CSDL Người dùng B đọc giá trị từ CSDL cập nhật Người dùng A cập nhật, ghi đè giá trị người B Đọc sai: Người dùng A cập nhật giá trị Người dùng B đọc giá trị cập nhật Người dùng A undo lại thao tác => Giá trị B đọc khơng cịn Tính tổng sai: Người dùng A tính tổng người dùng B thay đổi giá trị số mục Đọc giá trị lặp: A đọc giá trị, B thay đổi giá trị, A đọc lại thấy giá trị khác Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Xử lý truy cập đồng thời • Khóa bảng cần thao tác Kiểu khóa READ: cho người dùng khác đọc khơng ghi Kiểu khóa WRITE: khơng cho người dùng khác đọc hay ghi • Thực truy vấn • Thực cập nhật • Mở khóa bảng Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Ví dụ Xử lý cập nhật đồng thời //Khóa bảng cần thao tác $query = "LOCK TABLES items READ, orders WRITE, customer READ"; if (!$db->exec($query)) showerror(); // Thực truy vấn $query = "SELECT SUM(price*qty) from FROM items…"; if (!($stmt= $db->query($query))) showerror( ); … //rồi cập nhật if ($row["SUM(price*qty)"] > $minimum) { $query = "UPDATE orders SET discount = $discount WHERE cust_id = $custId AND order_id = $orderId"; if (!$db->exec($query)) showerror(); } // Mở khóa bảng $db->exec("UNLOCK TABLES“); Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Lưu ý khóa bảng • Sau khóa xong phải mở khóa bảng • Khơng cần khóa bảng thực truy vấn Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Sử dụng ORM Lê Đình Thanh, Bài giảng Phát triển ứng dụng web ORM • Mỗi bảng CSDL ánh xạ vào lớp "Model" • Mỗi ghi object Lê Đình Thanh, Bài giảng Phát triển ứng dụng web Tạo model php artisian make:model Models\Book