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

Tôi có thể làm gì để trả về kết quả SQL này trong một số trường hợp nhất định?

Bạn cần thay đổi một số AND của mình thành OR và sau đó đặt dấu ngoặc đơn cho OR.

Ngay bây giờ, bạn yêu cầu một trong các TRẬN ĐẤU $ xe và cả cả hai trong số các kết quả phù hợp từ khóa $. Thay vào đó, tôi nghĩ bạn muốn yêu cầu bất kỳ một trong số $ phương tiện hoặc $ đối sánh từ khóa.

Ngoài ra, tôi nghĩ rằng bạn có thể kết hợp các kết hợp từ khóa $ thành một lệnh gọi MATCH, phải không? Và tôi nghĩ rằng kiểm tra LIKE đối với T.truck_number là dư thừa với MATCH bao gồm cột đó. Trong trường hợp đó, bạn có thể viết phần SQL đó dưới dạng:

 AND (MATCH( T.truck_number, T.make, T.model, T.engine, T.vin_number,
      T.transmission_number, T.comments) AGAINST( '$vehicle' )
     OR MATCH( P.part_num, P.part_desc, P.part_ref,M.comments, M.work_done) 
     AGAINST( '$keywords' ))

Và tôi bao gồm nhận xét bắt buộc về việc bảo vệ bạn chống lại việc tiêm SQL bằng cách thoát SQL động mà bạn tạo.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khởi động MySQL Server dưới dạng dịch vụ (Win 8)

  2. CHỌN 1 từ DUAL:MySQL

  3. Tương đương của varchar (max) trong MySQL?

  4. ER_FK_NO_INDEX_PARENT:Không thêm được ràng buộc khóa ngoại. Thiếu chỉ mục cho ràng buộc

  5. SQL:Thứ tự mặc định của các truy vấn là gì?