Du måste ändra några av dina OCH till ELLER och sedan placera ELLER inom parentes.
Just nu behöver du en av $vehicle MATCHerna och även båda av $sökordsmatchningarna. Istället tror jag att du vill kräva något av $vehicle or $keyword matchar.
Jag tror också att du kan kombinera $keyword-matchningarna till ett enda MATCH-anrop, eller hur? Och jag tror att LIKE-kontrollen mot T.truck_number är överflödig med tanke på MATCH som innehåller den kolumnen. I så fall kan du skriva den sektionen av SQL 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' ))
Och jag inkluderar den obligatoriska kommentaren om att skydda dig själv mot SQL-injektion genom att undkomma den dynamiska SQL du skapar.