Tại sao không nên sử dụng các hàm mysql_ trong PHP nữa

“Hãy hòa nhã với những kẻ dở hơi. Ai biết được ngày sau bạn có thể phải làm việc cho một kẻ như vậy.”

Bill Gates

Microsoft

[DEBUG PHP]

Nếu bạn mới học PHP và nghe người ta nói rằng không nên sử dụng các hàm mysql_ trong PHP nữa?

Tại sao không nên sử dụng các hàm mysql_* nữa
Tại sao không nên sử dụng các hàm mysql_* nữa

Ví dụ như các hàm:

mysql_query()
mysql_connect()
mysql_real_escape_string()
...

Vấn đề: Tại sao nên sử dụng một giải pháp khác ngay cả khi chúng có thể hoạt động?

Nếu các hàm mysql_ không hoạt động thì tại sao lại gặp lỗi như:

Warning: mysql_connect(): No such file or directory

Câu trả lời về việc không nên sử dụng các hàm mysql trong PHP

Lý do đó là:

  • Các hàm mysql không được phát triển tích cực
  • Bị chính thức từ chối vào phiên bản PHP 5.5 (phát hành tháng 6 năm 2013).
  • Đã bị xóa hoàn toàn kể từ PHP 7.0 (phát hành tháng 12 năm 2015) 
  • Điều này có nghĩa là vào ngày 31 tháng 12 năm 2018, nó sẽ không tồn tại trong bất kỳ phiên bản PHP đang được hỗ trợ nào. Hiện tại, nó chỉ được cập nhật bảo mật.
  • Thiếu OO interface

Không được hỗ trợ:

  • Non-blocking, truy vấn không đồng bộ
  • Prepared statements hoặc parameterized queries
  • Stored procedures
  • Multiple Statements
  • Transactions
  • Phương thức xác thực mật khẩu ‘mới’ (theo mặc định trong MySQL 5.6; bắt buộc trong 5.7)
  • Tất cả chức năng trong MySQL 5.1

Chính vì các hàm mysql không được dùng nữa, việc sử dụng nó làm cho code của bạn khó có khả năng ổn định trong tương lai.

Thiếu hỗ trợ cho prepared statements đặc biệt quan trọng vì chúng cung cấp một phương thức thoát và trích dẫn dữ liệu bên ngoài rõ ràng hơn, ít lỗi hơn so với thoát thủ công bằng một lệnh gọi hàm riêng biệt.

PHP cung cấp ba API khác nhau để kết nối với MySQL. Đây là các mysql extension (đã bị loại bỏ kể từ PHP 7), mysqli extensionPDO.

Các hàm mysql_ * được sử dụng rất phổ biến, nhưng việc sử dụng chúng không được khuyến khích nữa.

Nhóm phát triển đang thảo luận về tình hình bảo mật cơ sở dữ liệu và khuyến cáo người dùng tránh xa tiện ích mở rộng ext/mysql.

Và nhóm nhà phát triển PHP sau này đã đưa ra quyết định tạo ra các lỗi E_DEPRECATED khi người dùng kết nối với MySQL, cho dù thông qua mysql_connect (), mysql_pconnect () hoặc chức năng kết nối ngầm được tích hợp trong ext/mysql.

Có thể bạn muốn xem

Cách CSS Bảng (Table)

Trong bài hướng dẫn tự học CSS này, bạn sẽ tìm hiểu toàn tập cách CSS bảng đẹp, CSS table một cách dễ hiểu nhất.

CSS Box Model

Trong hướng dẫn tự học CSS này, bạn sẽ tìm hiểu về CSS Box Model. Hiểu làm thế nào các phần tử có thể trình bày trực quan trên trang web.

Leave a reply

Please enter your comment!
Please enter your name here