Hướng dẫn mysql_query vs mysqli_query - mysql_query so với mysqli_query
Hướng dẫn cuối cùng để nâng cấp các $mysqli = mysqli_connect($host, $user, $password, $dbName); mysqli_set_charset($mysqli, 'utf8mb4'); 0chức năng lên MySQLi APILý do cho phần mở rộng mysqli mới là để tận dụng các tính năng mới có trong hệ thống MySQL phiên bản 4.1.3 và mới hơn. Khi thay đổi mã hiện tại của bạn từ 0API mysqli, bạn nên tận dụng những cải tiến này, nếu không nỗ lực nâng cấp của bạn có thể vô ích. Phần mở rộng mysqli có một số lợi ích, những cải tiến chính so với phần mở rộng mysql là:Phần mở rộng mysqli có một số lợi ích, những cải tiến chính so với phần mở rộng mysql là: Show
Khi nâng cấp từ các 0chức năng lên MySQLi, điều quan trọng là phải xem xét các tính năng này, cũng như một số thay đổi trong cách API này nên được sử dụng.1. Giao diện hướng đối tượng so với các chức năng thủ tục.Giao diện hướng đối tượng mysqli mới là một cải tiến lớn so với các chức năng cũ hơn và nó có thể làm cho mã của bạn sạch hơn và ít bị lỗi đánh máy hơn. Ngoài ra còn có phiên bản thủ tục của API này, nhưng việc sử dụng nó không được khuyến khích vì nó dẫn đến mã ít đọc hơn, dễ bị lỗi hơn. Để mở kết nối mới với cơ sở dữ liệu với MySQLi, bạn cần tạo phiên bản mới của lớp MySQLi.
Sử dụng kiểu thủ tục, nó sẽ trông như thế này:
Hãy nhớ rằng chỉ có 3 tham số đầu tiên giống như trong 3. Mã tương tự trong API cũ sẽ là:
Nếu mã PHP của bạn dựa trên kết nối ngầm với các tham số mặc định được xác định trong php.ini, bây giờ bạn phải mở kết nối MySQLi chuyển các tham số trong mã của bạn, sau đó cung cấp liên kết kết nối đến tất cả các hàm thủ tục hoặc sử dụng kiểu OOP. Để biết thêm thông tin, hãy xem bài viết: Cách kết nối đúng cách bằng mysqli 2. Hỗ trợ cho các báo cáo đã soạn sẵnĐây là một vấn đề lớn. MySQL đã hỗ trợ thêm cho các câu lệnh chuẩn bị sẵn trong MySQL 4.1 (2004). Các câu lệnh chuẩn bị sẵn là cách tốt nhất để ngăn chặn SQL injection . Nó chỉ hợp lý khi hỗ trợ cho các câu lệnh được chuẩn bị sẵn đã được thêm vào PHP. Các câu lệnh chuẩn bị sẵn nên được sử dụng bất cứ khi nào dữ liệu cần được truyền cùng với câu lệnh SQL (tức là 4, 5hoặc 6là các trường hợp sử dụng thông thường). MySQL API cũ có một chức năng để thoát khỏi các chuỗi được sử dụng trong SQL được gọi 7, nhưng nó không bao giờ nhằm mục đích bảo vệ chống lại việc tiêm SQL và đương nhiên không nên được sử dụng cho mục đích này. API MySQLi mới cung cấp một hàm thay thế 8cho khả năng tương thích ngược, hàm này gặp phải các vấn đề tương tự như hàm cũ và do đó không nên được sử dụng trừ khi không có sẵn các câu lệnh đã chuẩn bị.API MySQLi mới cung cấp một hàm thay thế 8cho khả năng tương thích ngược, hàm này gặp phải các vấn đề tương tự như hàm cũ và do đó không nên được sử dụng trừ khi không có sẵn các câu lệnh đã chuẩn bị.Cách mysql_ * cũ:
Cách tuyên bố đã chuẩn bị:
Các câu lệnh chuẩn bị sẵn trong MySQLi có thể hơi khó hiểu đối với người mới bắt đầu. Nếu bạn đang bắt đầu một dự án mới thì quyết định sử dụng API PDO mạnh hơn và đơn giản hơn có thể là một ý tưởng hay. 3. Khả năng gỡ lỗi nâng caoMột số nhà phát triển PHP cũ đã quen với việc kiểm tra lỗi SQL theo cách thủ công và hiển thị chúng trực tiếp trong trình duyệt như một phương tiện gỡ lỗi. Tuy nhiên, thực tế như vậy hóa ra không chỉ cồng kềnh mà còn có nguy cơ bảo mật. Rất may, MySQLi đã cải thiện khả năng báo cáo lỗi. MySQLi có thể báo cáo bất kỳ lỗi nào mà nó gặp phải dưới dạng ngoại lệ PHP. Các ngoại lệ PHP sẽ bong bóng trong tập lệnh và nếu không được xử lý sẽ kết thúc nó ngay lập tức, có nghĩa là không có câu lệnh nào sau câu lệnh có lỗi sẽ được thực thi. Ngoại lệ sẽ kích hoạt lỗi PHP Fatal và sẽ hoạt động như bất kỳ lỗi nào được kích hoạt từ lõi PHP tuân theo các cài đặt 9và 0. Để kích hoạt các ngoại lệ MySQLi, hãy sử dụng dòng 1và chèn nó ngay trước khi bạn mở kết nối DB.
Nếu bạn đã quen viết mã như:
hoặc là
bạn không cần phải nhập 2mã của mình nữa.
Nếu vì lý do nào đó bạn không thể sử dụng ngoại lệ, MySQLi có các chức năng tương đương để truy xuất lỗi. Bạn có thể sử dụng 3để kiểm tra lỗi kết nối và 4bất kỳ lỗi nào khác. Hãy chú ý đến đối số bắt buộc trong 4hoặc cách khác là bám vào kiểu và sử dụng OOP 6.
Xem các bài viết này để giải thích thêm: mysqli hoặc chết, nó có phải chết không? Làm cách nào để lấy thông tin lỗi MySQLi trong các môi trường khác nhau? 4. Các thay đổi khácThật không may, không phải mọi hàm từ 0đều có bản sao của nó trong MySQLi chỉ với một chữ "i" được thêm vào tên và liên kết kết nối làm tham số đầu tiên. Dưới đây là danh sách một số trong số họ:
20 hữu ích 3 bình luận chia sẻ 3 bình luận chia sẻ |