Sự khác biệt được coi là không đáng kể.
Tuy nhiên, người ta phải phân biệt câu lệnh chuẩn bị sẵn từ ý tưởng chung của một tuyên bố đã chuẩn bị.
Trước đây chỉ là một dạng truy vấn đang chạy được hầu hết DBMS hỗ trợ, giải thích tại đây
. Việc sử dụng nó có thể được đặt câu hỏi.
Sau này là ý tưởng chung về việc thay thế dữ liệu thực tế bằng trình giữ chỗ, ngụ ý xử lý thêm dữ liệu được thay thế. Nó được sử dụng rộng rãi trong lập trình, một printf()
nổi tiếng chức năng là một ví dụ. Và cách tiếp cận thứ hai này LUÔN LUÔN được sử dụng để chạy truy vấn đối với cơ sở dữ liệu , không cần biết nó có được hỗ trợ bởi các câu lệnh chuẩn bị sẵn hay không. Vì:
- câu lệnh được chuẩn bị sẵn giúp định dạng (hoặc xử lý) phù hợp là điều không thể tránh khỏi .
- câu lệnh được chuẩn bị sẵn thực hiện định dạng (hoặc xử lý) phù hợp ở vị trí thích hợp duy nhất - ngay trước khi thực thi truy vấn, không phải ở đâu khác, vì vậy, sự an toàn của chúng tôi sẽ không dựa vào các nguồn không đáng tin cậy như
- một số tính năng 'ma thuật' của PHP thay vì làm hỏng dữ liệu hơn là làm cho nó an toàn.
- thiện chí của một (hoặc một số) lập trình viên, những người có thể quyết định định dạng (hoặc không định dạng) biến của chúng ta ở đâu đó trong luồng chương trình. Đó là điểm vô cùng quan trọng.
- câu lệnh đã chuẩn bị ảnh hưởng đến chính giá trị đang đi vào truy vấn, nhưng không ảnh hưởng đến biến nguồn, giá trị này vẫn còn nguyên vẹn và có thể được sử dụng trong mã tiếp theo (được gửi qua email hoặc hiển thị trên màn hình).
- câu lệnh đã soạn sẵn có thể làm cho mã ứng dụng ngắn hơn đáng kể, thực hiện tất cả các định dạng phía sau (* chỉ khi trình điều khiển cho phép).
Vì vậy, ngay cả khi bạn cân nhắc việc không sử dụng các câu lệnh chuẩn bị sẵn (điều này khá ổn), bạn phải luôn tạo các truy vấn của mình bằng cách sử dụng trình giữ chỗ thay vì dữ liệu thực tế. Vì mục đích này, bạn có thể sử dụng PDO , hoạt động chính xác như mô tả ở trên - theo mặc định, nó chỉ mô phỏng chuẩn bị , có nghĩa là truy vấn SQL thông thường được tạo ra từ truy vấn và dữ liệu đã chuẩn bị, sau đó chạy trên cơ sở dữ liệu.
Tuy nhiên, PDO thiếu hỗ trợ cho nhiều kiểu dữ liệu quan trọng, chẳng hạn như mã định danh hoặc một mảng - do đó, nó khiến bạn không thể luôn sử dụng trình giữ chỗ và do đó có thể thực hiện việc chèn. May mắn thay, safeMysql có trình giữ chỗ cho mọi loại dữ liệu và cho phép bạn chạy các truy vấn một cách an toàn.