22. $stmt->bindValue(1, "Trí tuệ nhân tạo");
23. $stmt->bindValue(":id", 2);
24.
25. // Thực thi 26. $stmt->execute(); 26. $stmt->execute();
27.
28. // Kiểm tra kết quả cập nhật
29. if ($stmt->rowCount()) { echo "Đã cập nhật sách Trí tuệ nhân tạo"; }
30. else { echo "Lỗi cập nhật sách Trí tuệ nhân tạo"; }
31.
32. // Đóng kết nối cơ sở dữ liệu
33. $db = null;
34.} catch (PDOException $e) {
35. echo "Lỗi".$e->getMessage();
36.}
Nếu c}u lệnh chuẩn bị trƣớc l| c}u truy vấn thì sau khi thực thi, kết quả thực thi l| tập bản ghi có thể đƣợc lấy ra bằng phƣơng thức fetch() của đối tƣợng lệnh. Chƣơng trình sau đ}y l| viết lại của chƣơng trình thứ hai ở mục 7.2.5 với việc sử dụng PDO thay cho mysqli.
1. <?php
2. try {
3. // Mở kết nối cơ sở dữ liệu
4. $dsn = "mysql:host=112.113.114.115;dbname=thuvien;";
5. $db = new PDO($dsn, "canbo", "canbo@123");
6.
7. // Chuẩn bị câu lệnh truy vấn
8. $stmt= $db->prepare("select * from Sach where nxb = ?");
9. 10. // Buộc các tham số 10. // Buộc các tham số 11. $stmt->bindValue(1, "ĐHQGHN"); 12. 13. // Thực thi 14. $stmt->execute(); 15. 16. // Xử lý kết quả
17. while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
WebAppDevLê Đình Thanh, Nguyễn Việt Anh
157 19. }
20.
21. // Đóng kết nối cơ sở dữ liệu
22. $db = null;
23.} catch (PDOException $e) {
24. echo "Lỗi".$e->getMessage();
25.}
7.3.7.Thực thi giao tác
PDO hỗ trợ thực thi giao t{c tƣơng tự mysqli (xem thêm Mục 7.2.6). Đối tƣợng
PDO cung cấp c{c phƣơng thức beginTransaction(), commit() và rollBack() để thực
hiện giao tác. Phƣơng thức beginTransaction() đƣợc gọi để bắt đầu giao t{c. Phƣơng thức commit() đƣợc sử dụng để cam kết giao t{c v| phƣơng thức rollBack() đƣợc sử dụng để khôi phục cơ sở dữ liệu về trạng th{i trƣớc giao t{c nếu thực thi của giao t{c có lỗi. Chƣơng trình sau đ}y l| viết lại của chƣơng trình ở mục 7.2.6 với việc sử dụng PDO thay cho mysqli.
1. <?php
2. try {
3. // Mở kết nối cơ sở dữ liệu
4. $dsn = "mysql:host=112.113.114.115;dbname=thuvien;";
5. $db = new PDO($dsn, "canbo", "canbo@123");
6.