2016-02-25 24 views
5

Tôi đã thiết kế một trang web trước 5 năm sử dụng PHP MySQL và vẫn hoạt động tốt mà không gặp bất kỳ vấn đề nào. Tôi nghe nói MySQL chính thức không được chấp nhận như của PHP 5.5 và đã được gỡ bỏ như của PHP 7. Ngoài ra, PHP cung cấp ba API khác nhau để kết nối với MySQL (như MySQL, MySQLi, và PDO). Máy chủ web của tôi được cập nhật thường xuyên.Tôi có nên nâng cấp trang web của mình lên PHP MySQLi hoặc PDO không?

Tôi hiểu, tôi phải chuyển sang API mới hơn như MySQLi hoặc PDO để đảm bảo an toàn. Bây giờ tôi đang bối rối cho dù để chọn MySQLi hoặc PDO. Ngoài ra, có bất kỳ tùy chọn tương thích/di chuyển nào có sẵn cho trường hợp này không?

+0

Về việc chọn MySQLi hay PDO chủ yếu dựa trên ý kiến, với điều đó nói rằng, tôi tin một số sẽ nói PDO là an toàn nhất trong hai, nhưng tôi không biết liệu đó có phải là chính xác hay không. Nếu bạn đến từ mysql, tôi tin rằng MySQLi sẽ dễ dàng hơn để nắm bắt được. – Epodax

+0

Tôi khuyên bạn không nên nâng cấp phiên bản PHP cũng như phiên bản MySQL. Nếu trang web hoạt động thì hãy để trang web hoạt động. nâng cấp phiên bản phải là thủ công và không tự động –

+1

Hướng dẫn về PDO, mà tôi sẽ nói là sự lựa chọn hiển nhiên - https://phpdelusions.net/pdo – DTH

Trả lời

2

Câu trả lời khá đơn giản. Nếu như, giống như đa số người dùng PHP, bạn sẽ sử dụng các hàm API cơ sở dữ liệu ngay trong mã ứng dụng, không có bất kỳ trình bao bọc trung gian nào, sau đó PDO là lựa chọn duy nhất của bạn, vì nó là một loại trình bao bọc, tự động hóa nhiều hoạt động với mysqli phải được thực hiện thủ công.

Không, không có tùy chọn di chuyển, vì cách tiếp cận rất thay đổi đáng kể: thay vì đặt biến ngay trong truy vấn, chúng phải được thay thế trong truy vấn có dấu đặc biệt. Không có cách nào để tự động hóa quá trình này.

+0

PDO không phải là lựa chọn duy nhất của bạn. mysqli_ cũng là một lựa chọn. Và trong một số cách, một sự lựa chọn tốt hơn vì nó có thể so sánh được với mysql_. Tùy thuộc vào bao nhiêu viết lại là mong muốn, hoặc thậm chí cho phép, PDO có thể thậm chí không phải là một sự lựa chọn khả thi. – jmarkmurphy

+0

@jmarkmurphy người khác không thể đọc được. Tại sao tôi không ngạc nhiên. –

+0

@jmarkmurphy nhận xét của bạn thực tế là không chính xác. Bạn không thể yêu cầu 'mysqli' tốt hơn' PDO' nếu: 1) 'mysqli' chỉ hoạt động với MySQL 2)' mysqli' có giao diện phức tạp hơn 3) Có thể so sánh với 'mysql_' là một bước lùi, không chuyển tiếp - do đó, không có nó không tốt hơn. Nói rằng 'PDO' có thể thậm chí không phải là một lựa chọn khả thi không có ý nghĩa, không được ủng hộ bằng một bằng chứng có thể chứng minh duy nhất và chỉ là ý kiến ​​* của bạn *. Và bạn biết những gì họ nói về ý kiến ​​trong một khu vực dựa trên toán học và logic? –

-2

PDO và MySQli đều được sử dụng để kết nối cơ sở dữ liệu và cả hai đều có lợi thế riêng. Trong cái nhìn gần hơn PDO thắng trận chiến nhưng nếu bạn thực sự gắn bó với chỉ một nhà cung cấp cơ sở dữ liệu thì sự lựa chọn tốt nhất của cá nhân tôi là sử dụng MySQLi.

Bạn cũng sẽ trích xuất một số điểm tốt từ: http://code.tutsplus.com/tutorials/pdo-vs-mysqli-which-should-you-use--net-24059

4

Cho phép hãy xem cả hai phần mở rộng.

PDO

PDO là cơ sở dữ liệu trung tính - Bạn chỉ cần phải học một API để làm việc với hàng chục databases

Vì vậy, nếu bạn quyết định chuyển sang cơ sở dữ liệu khác, điều duy nhất bạn sẽ được thay đổi là DSN (tên nguồn dữ liệu).

Hỗ trợ cả tên và '?' trình giữ chỗ cho các câu lệnh đã chuẩn bị.

Sử dụng Drupal PDO.

mysqli

Trên mysqli Mặt khác được thiết kế đặc biệt cho các cơ sở dữ liệu Mysql và được khuyến khích bởi Mysql. Mysqli làm việc với cơ sở dữ liệu Mysql và MariaDB.

Chỉ hỗ trợ '?' trình giữ chỗ cho các câu lệnh đã chuẩn bị.

Joomla sử dụng mysqli

Kết luận

Có rất nhiều tranh cãi mâu thuẫn vượt qua mysqli hay PDO chạy nhanh hơn. Cả Mysqli và PDO đều sử dụng các trình điều khiển cơ bản giống nhau để truy cập cơ sở dữ liệu làm cho hiệu suất không đáng so sánh.

Vì vậy, không có người chiến thắng rõ ràng khi làm việc với Mysqli hoặc PDO. Nhưng giả sử bạn sử dụng Mysqli và sau đó bạn muốn sử dụng cơ sở dữ liệu khác, nó sẽ là một quá trình chuyển đổi khó khăn.

Sức mạnh chính của PDO trên Mysqli là trình giữ chỗ tên cho các báo cáo đã chuẩn bị và đó là lý do tôi chọn PDO trên Mysqli.

+0

Bạn đã bao giờ thử chuyển sang cơ sở dữ liệu khác bằng cách thay đổi "DNS" chưa? –

+0

@YourCommonSense, cảm ơn bạn đã chỉ ra :) – user3284463

+0

Câu hỏi không phải là lỗi đánh máy ngớ ngẩn mà là kinh nghiệm thực tế của bạn với việc chuyển đổi các backend cơ sở dữ liệu bằng cách thay đổi DSN. –

Các vấn đề liên quan