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

Làm cách nào để viết truy vấn sql được tham số hóa để ngăn chặn việc đưa vào SQL?

Tôi không phải là người dùng Knex.js, nhưng nhìn vào tài liệu, có vẻ như việc Knex sử dụng cú pháp đối tượng JavaScript để xác định vị từ là cách nó đạt được tham số hóa.

Tuy nhiên, khi đang sử dụng các hàm tích hợp, bạn cần sử dụng whereRaw .

Xem tài liệu ( http://knexjs.org/#Builder-whereRaw ) và ( http://knexjs.org/#Raw-Bindings ) Tôi nghĩ bạn muốn làm điều này:

.whereRaw('question LIKE :term OR note LIKE :term OR user_name LIKE :term', { term: '%' + term + '%' ] } )

Knex không có orWhereRaw , vì vậy bạn nên sử dụng phiên bản viết tay nếu bạn muốn phân tách các vị từ một cách hợp lý:

term = '%' + term + '%';

.orWhere( knex.raw( 'question  LIKE ?', [ term ] ) )
.orWhere( knex.raw( 'note      LIKE ?', [ term ] ) )
.orWhere( knex.raw( 'user_name LIKE ?', [ term ] ) )

Lưu ý ? là cho các tham số vị trí và :term dành cho các tham số được đặt tên.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Định dạng kết xuất không hợp lệ pgbackups:khôi phục ngay cả với liên kết tải xuống Dropbox

  2. Các quyền PostgreSQL bị hạn chế cho ứng dụng web

  3. Cách tạo một mảng từ SELECT trả về nhiều hơn một hàng

  4. PostgreSQL so sánh hai đối tượng jsonb

  5. xác thực mật khẩu không thành công cho người dùng cây đậu đàn hồi ebroot