Hướng dẫn dùng what statement trong PHP
Cơ sở dữ liệu MySQL hỗ trợ các câu lệnh đã chuẩn bị. Một tuyên bố đã chuẩn bị hoặc một câu lệnh tham số hóa được sử dụng để thực hiện cùng một tuyên bố nhiều lần với hiệu quả cao và bảo vệ chống tiêm SQL. Quy trình công việc cơ bản Việc thực hiện tuyên bố đã chuẩn bị bao gồm hai giai đoạn: chuẩn bị và thực thi. Ở giai đoạn chuẩn bị, một mẫu câu lệnh được gửi đến máy chủ cơ sở dữ liệu. Máy chủ thực hiện kiểm tra cú pháp và khởi tạo tài nguyên nội bộ của máy
chủ để sử dụng sau. Máy chủ MySQL hỗ trợ bằng cách sử dụng trình giữ chỗ ẩn danh, định vị với Chuẩn bị được theo sau bởi thực thi. Trong quá trình thực hiện, máy khách liên kết các giá trị tham số và gửi chúng đến máy chủ. Máy chủ thực thi câu lệnh với các giá trị bị ràng buộc bằng các tài nguyên nội bộ được tạo trước đó. Ví dụ số 1 tuyên bố đã chuẩn bị Thực hiện lặp đi lặp lại Một tuyên bố đã
chuẩn bị có thể được thực hiện nhiều lần. Khi mỗi lần thực hiện, giá trị hiện tại của biến ràng buộc được đánh giá và gửi đến máy chủ. Tuyên bố không được phân tích cú pháp một lần nữa. Mẫu câu lệnh không được chuyển đến máy chủ một lần nữa. Ví dụ #2 Chèn chuẩn bị một lần, được thực hiện nhiều lần Ví dụ trên sẽ xuất ra: Mỗi tuyên bố đã chuẩn bị chiếm tài nguyên máy chủ. Các tuyên bố nên được đóng một cách rõ ràng
ngay sau khi sử dụng. Nếu không được thực hiện rõ ràng, câu lệnh sẽ được đóng khi xử lý câu lệnh được giải phóng bởi PHP. Sử dụng một câu lệnh đã chuẩn bị không phải lúc nào cũng là cách hiệu quả nhất để thực hiện một tuyên bố. Một câu lệnh được chuẩn bị chỉ được thực hiện một lần gây ra nhiều chuyến đi vòng khách máy khách hơn so với một câu lệnh không được chuẩn bị. Đây là lý do tại sao id = 1 (integer) label = PHP (string)2 không được chạy như một tuyên bố đã chuẩn bị ở trên. Ngoài ra, hãy xem xét việc sử dụng cú pháp SQL đa điểm của MySQL để chèn. Ví dụ, Multi-Insert yêu cầu ít chuyến đi vòng nào giữa máy chủ và máy khách so với câu lệnh đã chuẩn bị ở trên. Ví dụ #3 Các chuyến đi vòng ít sử dụng SQL đa điểm
id = 1 (integer) label = PHP (string)5 Kết quả đặt các loại dữ liệu giá trị Giao thức máy khách MySQL định nghĩa một giao thức truyền dữ liệu khác nhau cho các câu lệnh đã chuẩn bị và các câu lệnh không được chuẩn bị. Các câu lệnh được chuẩn bị đang sử dụng cái gọi là giao thức nhị phân. Máy chủ MySQL gửi dữ liệu đặt kết quả "như là" ở định dạng nhị phân. Kết quả không được tuần tự hóa thành chuỗi trước khi gửi. Thư viện máy khách nhận được dữ liệu nhị phân và cố gắng chuyển đổi các giá trị thành các loại dữ liệu PHP phù hợp. Ví dụ: kết quả từ cột SQL id = 1 (integer) label = PHP (string)6 sẽ được cung cấp dưới dạng các biến số nguyên PHP. Ví dụ #4 Kiểu dữ liệu gốc
id = 1 (integer) label = PHP (string)9 Ví dụ trên sẽ xuất ra: id = 1 (integer) label = PHP (string) Mỗi tuyên bố đã chuẩn bị chiếm tài nguyên máy chủ. Các tuyên bố nên được đóng một cách rõ ràng ngay sau khi sử dụng. Nếu không được thực hiện rõ ràng, câu lệnh sẽ được đóng khi xử lý câu lệnh được giải phóng bởi PHP. Sử dụng một câu lệnh đã chuẩn bị không phải lúc nào cũng là cách hiệu quả nhất để thực hiện một tuyên bố. Một câu lệnh được chuẩn bị chỉ được thực hiện một lần gây ra nhiều chuyến đi vòng khách máy khách hơn so với một câu lệnh không được chuẩn bị. Đây là lý do tại sao id = 1 (integer) label = PHP (string)2 không được chạy như một tuyên bố đã chuẩn bị ở trên. Ngoài ra, hãy xem xét việc sử dụng cú pháp SQL đa điểm của MySQL để chèn. Ví dụ, Multi-Insert yêu cầu ít chuyến đi vòng nào giữa máy chủ và máy khách so với câu lệnh đã chuẩn bị ở trên.mysqli_result object. Ví dụ #3 Các chuyến đi vòng ít sử dụng SQL đa điểm Kết quả đặt các loại dữ liệu giá trị
id = 1 (integer), label = PHP (string)2 Ví dụ trên sẽ xuất ra: id = 1 (integer), label = PHP (string) Mỗi tuyên bố đã chuẩn bị chiếm tài nguyên máy chủ. Các tuyên bố nên được đóng một cách rõ ràng ngay sau khi sử dụng. Nếu không được thực hiện rõ ràng, câu lệnh sẽ được đóng khi xử lý câu lệnh được giải phóng bởi PHP. Sử dụng một câu lệnh đã chuẩn bị không phải lúc nào cũng là cách hiệu quả nhất để thực hiện một tuyên bố. Một câu lệnh được chuẩn bị chỉ được thực hiện một lần gây ra nhiều chuyến đi vòng khách máy khách hơn so với một câu lệnh không được chuẩn bị. Đây là lý do tại sao id = 1 (integer) label = PHP (string)2 không được chạy như một tuyên bố đã chuẩn bị ở trên.mysqli_stmt::store_result(). Ngoài ra, hãy xem xét việc sử dụng cú pháp SQL đa điểm của MySQL để chèn. Ví dụ, Multi-Insert yêu cầu ít chuyến đi vòng nào giữa máy chủ và máy khách so với câu lệnh đã chuẩn bị ở trên. Ví dụ #3 Các chuyến đi vòng ít sử dụng SQL đa điểmmysqli_stmt::get_result() returns a buffered result set. Kết quả đặt các loại dữ liệu giá trị
id = 1 (integer), label = PHP (string)6 Ví dụ trên sẽ xuất ra: array(1) { [0]=> array(2) { ["id"]=> int(1) ["label"]=> string(3) "PHP" } } Mỗi tuyên bố đã chuẩn bị chiếm tài nguyên máy chủ. Các tuyên bố nên được đóng một cách rõ ràng ngay sau khi sử dụng. Nếu không được thực hiện rõ ràng, câu lệnh sẽ được đóng khi xử lý câu lệnh được giải phóng bởi PHP.mysqli_result interface offers the additional benefit of flexible client-side result set navigation. Sử dụng một câu lệnh đã chuẩn bị không phải lúc nào cũng là cách hiệu quả nhất để thực hiện một tuyên bố. Một câu lệnh được chuẩn bị chỉ được thực hiện một lần gây ra nhiều chuyến đi vòng khách máy khách hơn so với một câu lệnh không được chuẩn bị. Đây là lý do tại sao id = 1 (integer) label = PHP (string)2 không được chạy như một tuyên bố đã chuẩn bị ở trên.
id = 1 (integer), label = PHP (string)9 Ví dụ trên sẽ xuất ra: array(2) { ["id"]=> int(3) ["label"]=> string(3) "C++" } array(2) { ["id"]=> int(2) ["label"]=> string(4) "Java" } array(2) { ["id"]=> int(1) ["label"]=> string(3) "PHP" } Mỗi tuyên bố đã chuẩn bị chiếm tài nguyên máy chủ. Các tuyên bố nên được đóng một cách rõ ràng ngay sau khi sử dụng. Nếu không được thực hiện rõ ràng, câu lệnh sẽ được đóng khi xử lý câu lệnh được giải phóng bởi PHP. Sử dụng một câu lệnh đã chuẩn bị không phải lúc nào cũng là cách hiệu quả nhất để thực hiện một tuyên bố. Một câu lệnh được chuẩn bị chỉ được thực hiện một lần gây ra nhiều chuyến đi vòng khách máy khách hơn so với một câu lệnh không được chuẩn bị. Đây là lý do tại sao id = 1 (integer) label = PHP (string)2 không được chạy như một tuyên bố đã chuẩn bị ở trên.mysqli_stmt::bind_param() function for more information. Một sự tách biệt như vậy đôi khi được coi là tính năng bảo mật duy nhất để ngăn chặn tiêm SQL, nhưng cùng một mức độ bảo mật có thể đạt được với các câu lệnh không được chuẩn bị, nếu tất cả các giá trị được định dạng chính xác. Cần lưu ý rằng định dạng chính xác không giống như thoát ra và liên quan đến logic nhiều hơn so với việc trốn thoát đơn giản. Do đó, các câu lệnh được chuẩn bị chỉ đơn giản là một cách tiếp cận thuận tiện hơn và dễ bị lỗi hơn đối với yếu tố bảo mật cơ sở dữ liệu này. Mô phỏng tuyên bố chuẩn bị phía khách hàng API không bao gồm mô phỏng cho mô phỏng câu lệnh được chuẩn bị phía khách hàng. So sánh nhanh các tuyên bố đã chuẩn bị và không chuẩn bị Bảng dưới đây so sánh các câu lệnh được chuẩn bị và không chuẩn bị phía máy chủ. So sánh các tuyên bố đã chuẩn bị và không chuẩn bị
n lần và phân tích cú pháp mọi lúc
Api liên kết tham số đầu vào Có bao nhiêu loại câu lệnh PHP?Trong PHP, có 4 loại tuyên bố có điều kiện khác nhau.4 different types of Conditional Statements. Các câu lệnh kiểm soát trong PHP là gì?Các câu lệnh kiểm soát là các câu lệnh có điều kiện thực thi một khối các câu lệnh nếu điều kiện là chính xác.Câu lệnh bên trong khối có điều kiện sẽ không thực thi cho đến khi điều kiện được thỏa mãn.Câu lệnh if: if (expression1)conditional statements that execute a block of statements if the condition is correct. The statement inside the conditional block will not execute until the condition is satisfied. The If statement: if(expression1) Tại sao các tuyên bố có điều kiện được sử dụng trong PHP?PHP cho phép bạn chọn hành động nào dựa trên kết quả của một điều kiện.Điều kiện này có thể là bất cứ điều gì bạn chọn và bạn có thể kết hợp các điều kiện để thực hiện các hành động phức tạp hơn. Tuyên bố trong Php là gì?Các câu lệnh nếu bạn có thể có nếu các câu lệnh bên trong các câu lệnh, điều này được gọi là một nếu.You can have if statements inside if statements, this is called a nested if. |