sql >> Databáze >  >> RDS >> Mysql

Co mohu udělat, aby tento SQL v určitých situacích vrátil výsledky?

Musíte změnit některé ze svých AND na NEBO a poté přidat OR do závorek.

Právě teď potřebujete jeden z $vehicle MATCH a také obě ze shod $klíčových slov. Místo toho si myslím, že chcete vyžadovat kterékoli z $vehicle nebo $keyword se shoduje.

Také si myslím, že shody $klíčových slov můžete spojit do jediného volání MATCH, že? A myslím, že kontrola LIKE proti T.truck_number je nadbytečná vzhledem k MATCH, který obsahuje tento sloupec. V takovém případě byste mohli napsat tuto sekci SQL jako:

 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' ))

A přidávám obligátní komentář o tom, jak se chránit před injekcí SQL tím, že uniknete z dynamického SQL, který vytvoříte.




  1. Jak dlouho by mělo trvat vytvoření indexu pomocí ALTER TABLE v MySQL?

  2. Které znaky jsou ve skutečnosti schopné způsobit SQL injection v MySQL?

  3. Nelze připojit webovou aplikaci Azure - NodeJS k Azure Mysql

  4. rozdělit jeden řádek na více řádků v SQL