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

Lý do tại sao người ta không nên sử dụng các hàm mysql_ trong PHP nữa. Nhà phát triển PHP cũng khuyến cáo chuyển sang sử dụng giải pháp khác thay vì dùng các hàm mysql.

[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.

Tìm 1 chuỗi bên trong 1 chuỗi khác với PHP.

Giải pháp để kiểm tra xem 1 chuỗi này có nằm trong một chuỗi khác hay không với hàm strops() trong PHP

[DEBUG PHP]

Vấn đề đặt ra:

Vấn đề: Cần kiểm tra xem một chuỗi có nằm trong chuỗi khác hay không?

$chuoi = "Đây là chuỗi cần kiểm tra";

// Viết code để kiểm tra từ 'cần' có mặt trong chuỗi trên không?

Giải pháp: Kiểm tra một chuỗi có nằm trong chuỗi khác hay không.

Kiểm tra một chuỗi có nằm trong chuỗi khác hay không.

Bạn có thể sử dụng hàm strops() được PHP cung cấp sẵn để tìm một chuỗi bên trong chuỗi khác như sau:

$chuoi = "Đây là chuỗi cần kiểm tra";

if (strpos($chuoi, 'cần') !== false) {
    echo 'true';
}

Lưu ý:

Việc sử dụng “! == false” là có chủ ý

Sử dụng toán tử ! == (thay vì “! = False” hoặc “== true” là do bản chất đúng / sai của PHP trong việc xử lý với kết quả trả về của strops.

>>> Xem cụ thể hơn về cách tìm và xác định một chuỗi có tồn tại trong chuỗi khác hay không bằng cách sử dụng hàm strpos() trong PHP