Du skal ændre nogle af dine OG'er til OR'er og derefter sætte OR'erne i parentes.
Lige nu har du brug for en af $vehicle MATCH'erne og også begge af $søgeord-matchene. I stedet tror jeg, du vil kræve et hvilket som helst af $vehicle or $søgeord matcher.
Jeg tror også, at du kan kombinere $keyword-matches til et enkelt MATCH-kald, ikke? Og jeg tror, at LIKE-tjekket mod T.truck_number er overflødigt givet MATCH, der inkluderer den kolonne. I så fald kan du skrive den del af SQL'en som:
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' ))
Og jeg inkluderer den obligatoriske kommentar om at beskytte dig selv mod SQL-injektion ved at undslippe den dynamiske SQL, du opretter.