Musisz zmienić niektóre ORAZ na OR, a następnie umieścić OR w nawiasach.
W tej chwili potrzebujesz jednego z $vehicle MATCHów, a także oba $kluczowych dopasowań. Zamiast tego myślę, że chcesz wymagać jednego z $vehicle lub $dopasowania słów kluczowych.
Myślę też, że możesz połączyć dopasowania $keyword w jedno wywołanie MATCH, prawda? I myślę, że sprawdzenie LIKE względem T.truck_number jest zbędne, biorąc pod uwagę DOPASOWANIE, które zawiera tę kolumnę. W takim przypadku możesz napisać tę sekcję 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' ))
I dołączam obowiązkowy komentarz dotyczący ochrony przed wstrzyknięciem SQL poprzez unikanie dynamicznego SQL, które tworzysz.