Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tôi có thể thay thế mù quáng tất cả các hàm mysql_ bằng mysqli_ không?

Câu trả lời ngắn gọn là không , các chức năng không tương đương.

Tin tốt là có một công cụ chuyển đổi sẽ giúp bạn nếu bạn có nhiều cuộc gọi / dự án cần thay đổi. Điều này sẽ cho phép các tập lệnh của bạn hoạt động ngay lập tức.

https://github.com/philip/MySQLConverterTool

Đây là phiên bản được phân nhánh của phiên bản gốc của Oracle và là phiên bản kosher.

Điều đó nói rằng, không quá khó để cập nhật mã của bạn và bạn có thể muốn chuyển sang một phương pháp định hướng đối tượng ...

1) Kết nối

Đối với tất cả các ý định và mục đích, bạn cần một hàm kết nối mới để lưu kết nối dưới dạng một biến PHP, chẳng hạn;

$mysqli = new mysqli($host, $username, $password, $database);

Lưu ý rằng tôi đã lưu kết nối vào $mysqli . Bạn có thể lưu vào $db hoặc bất cứ điều gì bạn thích, nhưng bạn nên sử dụng điều này trong suốt mã của mình để tham chiếu kết nối.

Hãy nhớ bật báo cáo lỗi cho mysqli trước khi mở kết nối;

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

2) Truy vấn

Lưu ý:Bạn nên bảo vệ khỏi việc đưa vào SQL bằng các câu lệnh đã chuẩn bị sẵn, có sẵn trong MySQLi. Hãy xem Làm cách nào để ngăn chặn việc đưa SQL vào PHP? , nhưng tôi sẽ chỉ đề cập đến những điều cơ bản ở đây.

Bây giờ bạn phải bao gồm kết nối làm đối số trong truy vấn của mình và mysqli_ khác chức năng. Trong mã thủ tục, đó là đối số đầu tiên, trong OO, bạn viết nó giống như một phương thức lớp.

Thủ tục:

$result = mysqli_query($mysqli, $sql);

OO:

$result = $mysqli->query($sql);

3) Kết quả tìm nạp

Việc tìm nạp kết quả tương tự như mysql_ cũ chức năng trong thủ tục;

while ($row = mysqli_fetch_assoc($result))

nhưng dưới dạng $result bây giờ là một đối tượng trong mysqli, bạn có thể sử dụng lệnh gọi hàm đối tượng;

while ($row = $result->fetch_assoc())

4) Đóng kết nối

Vì vậy, như trước đây, bạn cần bao gồm kết nối trong hàm đóng; như một đối số trong thủ tục;

mysqli_close($mysqli);

và là đối tượng mà bạn chạy chức năng trong OO;

$mysqli->close();

Tôi sẽ ở đây mãi mãi nếu tôi trải qua tất cả, nhưng bạn hiểu đấy. Xem qua tài liệu để biết thêm thông tin. Đừng quên chuyển đổi bất kỳ chức năng đóng kết nối, giải phóng kết quả hoặc lỗi và đếm hàng nào mà bạn có.

Quy tắc chung cơ bản là đối với các hàm sử dụng kết nối cơ sở dữ liệu, bạn cần đưa nó vào hàm ngay bây giờ (dưới dạng đối số đầu tiên trong thủ tục hoặc đối tượng bạn sử dụng để gọi hàm trong OO) hoặc cho một tập kết quả bạn chỉ có thể thay đổi chức năng thành mysqli_ hoặc sử dụng tập hợp kết quả làm đối tượng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ví dụ về UTC_TIME - MySQL

  2. Cách thay đổi múi giờ máy chủ MySQL

  3. Truy vấn con so với tham gia

  4. CodeIgniter:Không thể kết nối với máy chủ cơ sở dữ liệu của bạn bằng cách sử dụng cài đặt được cung cấp Thông báo lỗi

  5. Làm thế nào để có được mọi hàng thứ N trong MySQL