Một trong những lợi ích của cfqueryparam là kiểm tra kiểu trước khi các giá trị được gửi đến cơ sở dữ liệu của bạn. Ví dụ: bạn chỉ định cf_sql_integer
, CF không chỉ xác minh giá trị là số, mà còn là số nguyên trong một phạm vi cụ thể. Khi bạn bỏ qua cfsqltype, CF sẽ sử dụng cf_sql_char
. Vì vậy, bạn rõ ràng là mất kiểm tra loại cho những thứ như ngày tháng và số.
Cá nhân, tôi nghĩ bạn nên cung cấp cfsqltype. Tuy nhiên, ngay cả khi bạn không sử dụng cfqueryparam nghĩa là CF sử dụng các biến liên kết. Một lợi ích phụ của các biến liên kết là giúp bảo vệ các truy vấn của bạn chống lại tiêm sql. Vì vậy, theo nghĩa đó, nó vẫn là một điều tốt.
Tôi nghĩ nó hữu ích nhưng "xác thực" không phải "truy vấn sql tiêm bảo vệ".
Cập nhật: Không, nó vẫn được áp dụng. Việc bảo vệ đến từ việc sử dụng các biến liên kết. Vì CF vẫn sẽ sử dụng các biến liên kết, thậm chí không có một loại, tôi tin rằng việc bảo vệ tiêm sql cơ bản vẫn được áp dụng.
Điều đó nói rằng, sử dụng cf_sql_char
trên một mục nào đó không phải là cột char
có thể buộc cơ sở dữ liệu của bạn thực hiện chuyển đổi tiềm ẩn cho loại dữ liệu của cột mục tiêu, đôi khi tạo ra kết quả không mong muốn. Vì vậy, nói chung tôi sẽ nói bạn nên chỉ định một cfsqltype.
Ý của bạn là "vẫn hữu ích"? Nó có hữu ích trước đây không? –
Tôi đoán tôi có nghĩa là từ tất cả các tài liệu tôi đọc cfsqltype luôn luôn có mặt trong một cfqueryparam nhưng nó không phải là một thuộc tính cần thiết. Tôi nghĩ rằng nó là hữu ích nhưng là "xác nhận" không "bảo vệ tiêm truy vấn sql". Tôi muốn một số ý kiến peeps kiến thức nhiều hơn như chính mình. –
Tôi nghĩ bạn nên cập nhật câu hỏi của mình để cung cấp ví dụ: –
webRat