ANDの一部をORに変更してから、ORを括弧で囲む必要があります。
現在、$ Vehicle MATCHの1つと、両方が必要です。 $keywordの一致。代わりに、$Vehicleまたはのいずれかを要求したいと思います。 $keywordが一致します。
また、$keywordの一致を1つのMATCH呼び出しに組み合わせることができると思いますね。そして、T.truck_numberに対するLIKEチェックは、その列を含むMATCHを考えると冗長だと思います。この場合、SQLのそのセクションを次のように記述できます。
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' ))
また、作成した動的SQLをエスケープすることにより、SQLインジェクションから身を守ることについての義務的なコメントを含めます。