Sự khác biệt giữa MySQL, MySQLi và PDO là gì? [đóng cửa]


128

Sự khác biệt giữa MySQL, MySQLiPDO là gì?

Cái nào phù hợp nhất để sử dụng với PHP-MySQL?

Câu trả lời:


100

Có (hơn) ba cách phổ biến để sử dụng MySQL từ PHP. Điều này phác thảo một số tính năng / sự khác biệt PHP: Chọn API :

  1. ( ĐỔI ) Các chức năng mysql là thủ tục và sử dụng thoát thủ công.
  2. MySQLi là sự thay thế cho các chức năng mysql, với các phiên bản hướng đối tượng và hướng thủ tục. Nó có hỗ trợ cho các báo cáo chuẩn bị.
  3. PDO (PHP Data Object) là lớp trừu tượng hóa cơ sở dữ liệu chung với sự hỗ trợ cho MySQL trong số nhiều cơ sở dữ liệu khác. Nó cung cấp các báo cáo đã chuẩn bị và tính linh hoạt đáng kể trong cách trả lại dữ liệu.

Tôi sẽ khuyên bạn nên sử dụng PDO với các tuyên bố đã chuẩn bị. Đây là một API được thiết kế tốt và sẽ cho phép bạn dễ dàng chuyển sang cơ sở dữ liệu khác (bao gồm mọi cơ sở hỗ trợ ODBC ) nếu cần.


9
Thường có sự nhầm lẫn rằng đối với thủ tục, bạn phải sử dụng các hàm mysql _ * () trong đó đối với OO, bạn sử dụng mysqli! Thực tế là mysqli thay thế hoàn toàn việc triển khai (PHP 4) sớm của mysql. Có thể sử dụng cả kiểu thủ tục và kiểu OO với mysqli.
Patrick Allaert

@Patrick, cảm ơn. Tôi đã sửa cái này.
Matthew Flaschen

46

Đó là các API khác nhau để truy cập vào phụ trợ MySQL

  • Các mysql là API lịch sử
  • Các mysqli là một phiên bản mới của API lịch sử. Nó sẽ hoạt động tốt hơn và có một bộ chức năng tốt hơn. Ngoài ra, API là hướng đối tượng.
  • PDO_MySQL , là MySQL cho PDO. PDO đã được giới thiệu trong PHP và dự án nhằm tạo ra một API chung cho tất cả các truy cập cơ sở dữ liệu, vì vậy về mặt lý thuyết, bạn có thể di chuyển giữa RDMS mà không thay đổi bất kỳ mã nào (nếu bạn không sử dụng hàm RDBM cụ thể trong các truy vấn của mình ), cũng hướng đối tượng.

Vì vậy, nó phụ thuộc vào loại mã bạn muốn sản xuất. Nếu bạn thích các lớp hướng đối tượng hoặc các hàm đơn giản ...

Lời khuyên của tôi sẽ là

  1. PDO
  2. MySQL
  3. mys

Cũng theo cảm nhận của tôi, API mysql có thể sẽ bị xóa trong các bản phát hành trong tương lai PHP.


3
Không còn cảm giác nữa: PHP7 đã loại bỏ API mysql, để lại PDO và mysqli
Manuel

3

mysqli là phiên bản nâng cao của mysql.

Phần mở rộng PDO định nghĩa một giao diện nhất quán, nhẹ để truy cập cơ sở dữ liệu trong PHP. Mỗi trình điều khiển cơ sở dữ liệu thực hiện giao diện PDO có thể hiển thị các tính năng dành riêng cho cơ sở dữ liệu dưới dạng các hàm mở rộng thông thường.


4
sao chép từ tập tin thủ công không phải là rất hữu ích.
XuDing

3

Cụ thể, tiện ích mở rộng MySQLi cung cấp các lợi ích cực kỳ hữu ích sau so với tiện ích mở rộng MySQL cũ ..

Giao diện OOP (ngoài thủ tục) Tuyên bố đã chuẩn bị Giao dịch hỗ trợ + Thủ tục lưu trữ Hỗ trợ Nicer Cú pháp cải tiến tốc độ Nâng cao gỡ lỗi

Gia hạn PDO

Phần mở rộng đối tượng dữ liệu PHP là một lớp trừu tượng cơ sở dữ liệu. Cụ thể, đây không phải là giao diện MySQL, vì nó cung cấp trình điều khiển cho nhiều công cụ cơ sở dữ liệu (tất nhiên bao gồm cả MYSQL).

PDO nhằm mục đích cung cấp một API nhất quán, có nghĩa là khi một công cụ cơ sở dữ liệu được thay đổi, mã thay đổi để phản ánh điều này nên ở mức tối thiểu. Khi sử dụng PDO, mã của bạn thường sẽ "chỉ hoạt động" trên nhiều công cụ cơ sở dữ liệu, chỉ bằng cách thay đổi trình điều khiển bạn đang sử dụng.

Ngoài việc tương thích với cơ sở dữ liệu chéo, PDO còn hỗ trợ các câu lệnh được chuẩn bị, các thủ tục được lưu trữ và hơn thế nữa, trong khi sử dụng Trình điều khiển MySQL.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.