2012-06-14 28 views
8

Sách hướng dẫn PHP gần đây đã bắt đầu hiển thị cảnh báo sau trên mọi trang chức năng mysql:Có phải PHP đã bỏ qua phần mở rộng MySQL không?

Sử dụng phần mở rộng này không được khuyến khích. Thay vào đó, nên sử dụng tiện ích mở rộng MySQLi hoặc PDO_MySQL. Xem thêm MySQL: chọn một hướng dẫn API và Câu hỏi thường gặp liên quan để biết thêm thông tin ...

MySQLi đã từng rất lỗi, nhưng họ đã cải thiện nó để nó xứng đáng với tên của nó? Đó có phải là lý do họ từ bỏ phần mở rộng của MySQL và cố gắng khiến mọi người sử dụng MySQLi?

Thực ra, tôi muốn sử dụng MySQLi nếu nó không còn lỗi nữa. Nó có nhiều tính năng hơn và hướng đối tượng của nó.

Mọi nhận xét về điều này?

// CHỈNH SỬA: Những gì tôi muốn biết là nếu có thể sử dụng MySQLi. Hay nó vẫn còn lỗi? Tôi có nên đi với PDO không?

+4

* "MySQLi từng rất lỗi" * - ý bạn là gì? – hakre

+0

Tôi đã chỉnh sửa câu trả lời của mình để giải quyết chỉnh sửa của bạn. – Flavius

Trả lời

2

Có bạn có thể đi với MySQLi và những gì bạn viết là đúng, API cho phép thay đổi dễ dàng từ API MySQL.

Đối với dự án mới đó là khuyến cáo không sử dụng ext/mysql nữa, nhưng để sử dụng ext/mysqli hoặc PDO_MySQL.

Vì bạn chưa viết những gì đã lỗi cho bạn vào năm 2009, thật khó để nói nếu những lỗi này đã biến mất. Tôi sẽ giả định như vậy, nhưng, tốt, kiểm tra cho chính mình.

Bạn có thể muốn sử dụng ext/mysqli với người lái xe MySQL mẹ đẻ thay vì MySQL thư viện máy chủ của khách hàng (libmysql).

+0

cảm ơn bạn vì câu trả lời tuyệt vời của bạn. Bất kỳ lý do để thích trình điều khiển bản địa MySQL? –

+1

Hãy xem tại đây: http://blog.ulf-wendel.de/?p=157 - Nó có quản lý bộ nhớ tốt hơn, nhưng đó chỉ là một lý do.Bạn có thể sử dụng nó với mysqli hoặc PDO. – hakre

9

Có. Vì (rất) dài. Bây giờ chúng ta có mysqli, hoặc tốt hơn, PDO.

Tôi sẽ không khóa bản thân mình vào mysqli, tôi thích PDO hơn. Bên cạnh việc di chuyển dễ dàng hơn nó cung cấp từ một hệ thống cơ sở dữ liệu khác, nó cũng cung cấp xử lý lỗi tốt hơn.

Điều tôi muốn biết là nếu bạn có thể sử dụng MySQLi. Hay nó vẫn còn lỗi?

Bản thân MySQL hoàn toàn không có lỗi và được sử dụng trong sản xuất.

Tôi có nên sử dụng PDO thay thế không?

Nếu đối số duy nhất của bạn để sử dụng mysqli giống với mysql, thì có thể bạn không sử dụng mysqli cho toàn bộ tiềm năng của mình. Nếu bạn muốn sử dụng mysqli với tiềm năng đầy đủ của nó, thì bạn phải bắt đầu học "anew" (nó không phải là quá nhiều để học, bạn biết). Nếu bạn bắt đầu học một số công cụ mới từ "đầu", thì tại sao bạn không học được phương án tốt hơn - PDO, ngay từ đầu?

Mặt khác, PDO cũng không hoàn hảo. Với PDO, bạn không thể truy cập vào các API cụ thể của MySQL (chẳng hạn như set_charset sau xây dựng, cài đặt infile, truy vấn không đồng bộ, các tham số OUT từ các câu lệnh đã chuẩn bị). Ngoài ra, bạn nên đặt nó để thực hiện các câu lệnh chuẩn bị đúng nếu bạn cần chúng.

+0

Tôi đã thử MySQLi vào năm 2009 và nó không hoạt động đúng cách. Kể từ đó, tôi đã sử dụng phần mở rộng MySQL mặc định và nó đã được làm việc mà không có vấn đề. Bạn có thích PDO hơn MySQLi cho bất kỳ lý do cụ thể? Tôi thích MySQLi do sự giống nhau của nó với MySQL. –

+1

Tôi nghĩ rằng tôi đã đề cập trong câu trả lời của tôi tại sao "PDO trên MySQLi". Mã MySQLi có xu hướng làm cho mã trở nên cồng kềnh hơn mức cần thiết - từ kinh nghiệm của tôi vì xử lý lỗi khó xử. Nếu đó không phải là vấn đề với bạn, hãy đi với MySQLi. Nhưng tôi khuyên bạn trước tiên nên kiểm tra cả hai và xem những gì tao nhã hơn. – Flavius

+0

Nếu đối số duy nhất của bạn để sử dụng mysqli là sự giống nhau của nó với mysql, thì có thể bạn sẽ không sử dụng mysqli cho toàn bộ tiềm năng của nó. Nếu bạn muốn sử dụng mysqli với tiềm năng đầy đủ của nó, thì bạn phải bắt đầu học lại. Nếu bạn bắt đầu từ đầu, thì tại sao không học cách thay thế tốt hơn - PDO? – Flavius

3

PHP MySQLi là một Tiện ích mở rộng được cải tiến của MySQL.

Tiện ích mở rộng mysqli cho phép bạn truy cập chức năng được cung cấp bởi MySQL 4.1 trở lên.

Bạn có thể so sánh cả hai trong số đó tại The MySQLi Extension Function Summary.


Nếu bạn đang tìm kiếm một giải pháp chứng minh tương lai, hướng đối tượng, đường đi là PHP PDO.

Mở rộng đối tượng dữ liệu PHP (PDO) xác định giao diện gọn nhẹ, nhất quán để truy cập cơ sở dữ liệu bằng PHP. Mỗi trình điều khiển cơ sở dữ liệu thực hiện giao diện PDO có thể trưng ra các tính năng cơ sở dữ liệu cụ thể như các hàm mở rộng thông thường.

...

PDO cung cấp một lớp trừu tượng truy cập dữ liệu, có nghĩa là, bất kể là cơ sở dữ liệu bạn đang sử dụng, bạn sử dụng các chức năng tương tự để phát hành các truy vấn và lấy dữ liệu.

1

Đã đến lúc. API mysql, mặc dù dễ sử dụng, bị nhiều vấn đề. Có thể cho rằng vấn đề tồi tệ nhất là thiếu sự hỗ trợ hoàn toàn cho các câu lệnh chuẩn bị, điều này buộc bạn phải ghép các bit của SQL thông qua các phép toán chuỗi. Đây không chỉ là chậm mà còn là một nguồn chính của lỗ hổng SQL injection.

Một trong những ưu điểm của PDO so với MySQLi là bạn sẽ thấy rằng bạn không phải học một API mới khi bạn quyết định sử dụng một DBMS khác trong một dự án trong tương lai.

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