[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?
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 extension và PDO.
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.