Sử dụng pdo hay mysqli thì tốt hơn?
Để kết nối với cơ sở dữ liệu MySQL hoặc MariaDB, PHP cung cấp hai API. PDO với trình điều khiển PDO_MySQL và mysqli. Trước PHP 7 cũng có ext/mysql không được khuyến nghị sử dụng nữa Show Sự khác biệt về tính năng giữa mysqli và PDO Tính năngPDOMySQLiHỗ trợ cơ sở dữ liệu12 trình điều khiển khác nhauMySQL và MariaDBGiao diệnOOPOOP và thủ tụcTham số được đặt tênCóKhôngÁnh xạ đối tượngCóCóCâu lệnh chuẩn bịCóCóTruy vấn không chặn, không đồng bộ với hỗ trợ mysqlndKhôngCóHỗ trợ nhiều câu lệnhHầu hếtCóMySQL 5. 1+ chức năng hỗ trợ MostAllKết nối cơ sở dữ liệu
Hỗ trợ cơ sở dữ liệuƯu điểm cốt lõi của PDO so với MySQLi là hỗ trợ trình điều khiển cơ sở dữ liệu. Tại thời điểm viết bài này, PDO hỗ trợ 12 trình điều khiển khác nhau, trái ngược với MySQLi, chỉ hỗ trợ cơ sở dữ liệu MySQL và MariaDB tham số được đặt tênMột tính năng quan trọng khác của PDO là liên kết tham số dễ dàng hơn thay vì liên kết số
MySQLi cung cấp liên kết tham số dấu chấm hỏi và không hỗ trợ tham số được đặt tên
Liên kết tham số dấu chấm hỏi có vẻ ngắn hơn, nhưng nó gần như không linh hoạt như tham số được đặt tên, do thực tế là nhà phát triển phải luôn theo dõi thứ tự tham số; ánh xạ đối tượngCả PDO và MySQLi đều có thể ánh xạ kết quả tới các đối tượng. Điều này rất hữu ích nếu bạn không muốn sử dụng lớp trừu tượng cơ sở dữ liệu tùy chỉnh, nhưng vẫn muốn hành vi giống như ORM. Hãy tưởng tượng rằng chúng ta có một lớp Người dùng với một số thuộc tính khớp với tên trường từ cơ sở dữ liệu
Nếu không có ánh xạ đối tượng, chúng ta sẽ cần điền giá trị của từng trường (bằng tay hoặc thông qua hàm tạo) trước khi có thể sử dụng phương thức info() một cách chính xác Điều này cho phép chúng tôi xác định trước các thuộc tính này trước khi đối tượng thậm chí được xây dựng. Ví dụ
Bảo vệGiả sử một hacker đang cố chèn một số SQL độc hại thông qua tham số truy vấn HTTP 0 (GET)
Nếu chúng tôi không thoát khỏi điều này, nó sẽ được đưa vào truy vấn “nguyên trạng” - xóa tất cả các hàng khỏi bảng người dùng (cả PDO và mysqli đều hỗ trợ nhiều truy vấn)
Như bạn có thể thấy, 1 không chỉ thoát khỏi chuỗi mà còn trích dẫn nó. Ở phía bên kia, 0 sẽ chỉ thoát khỏi chuỗi. Bạn sẽ cần phải áp dụng các dấu ngoặc kép theo cách thủ công________số 8 Khuyến nghị là luôn sử dụng các câu lệnh đã chuẩn bị với các truy vấn ràng buộc thay vì 1 và 0Hiệu suấtMặc dù cả PDO và MySQLi đều khá nhanh, MySQLi hoạt động nhanh hơn không đáng kể trong các điểm chuẩn - ~2. 5% cho báo cáo không chuẩn bị trước và ~6. 5% cho những người chuẩn bị. Tiện ích mở rộng MySQL thậm chí còn nhanh hơn Tại sao nên sử dụng PDO thay vì MySQLi?PDO sẽ hoạt động trên 12 hệ thống cơ sở dữ liệu khác nhau, trong khi MySQLi sẽ chỉ hoạt động với cơ sở dữ liệu MySQL . Vì vậy, nếu bạn phải chuyển dự án của mình sang sử dụng cơ sở dữ liệu khác, PDO sẽ giúp quá trình này trở nên dễ dàng. Bạn chỉ phải thay đổi chuỗi kết nối và một vài truy vấn.
PDO có an toàn hơn MySQLi không?Việc sử dụng MySQLi vẫn an toàn hay tôi nên sử dụng PDO? . Tôi thích PDO hơn vì nó giúp viết mã để sử dụng các tham số truy vấn dễ dàng hơn một chút, nhưng chúng hoạt động tốt như nhau trong cả hai phần mở rộng PHP .
Bạn có thể sử dụng PDO và MySQLi cùng một lúc không?Có, có thể .
Tại sao tôi nên sử dụng PDO PHP?PDO trong PHP cung cấp lớp trừu tượng truy cập dữ liệu, nghĩa là bạn có thể đưa ra các truy vấn và tìm nạp dữ liệu bằng cách sử dụng các chức năng giống nhau bất kể bạn đang sử dụng cơ sở dữ liệu nào. PDO isn't a database abstraction; it doesn't rewrite SQL or imitates features that aren't accessible. |