Sie müssen einige Ihrer UNDs in ODERs ändern und dann die ODERs in Klammern setzen.
Im Moment benötigen Sie eines der $vehicle MATCHes und auch beide der $keyword-Übereinstimmungen. Stattdessen denke ich, dass Sie eines der $vehicle oder benötigen $Keyword-Übereinstimmungen.
Ich denke auch, dass Sie die $keyword-Übereinstimmungen in einem einzigen MATCH-Aufruf kombinieren können, nicht wahr? Und ich denke, dass die LIKE-Prüfung gegen T.truck_number angesichts der Übereinstimmung, die diese Spalte enthält, überflüssig ist. In diesem Fall könnten Sie diesen Abschnitt der SQL schreiben als:
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' ))
Und ich füge den obligatorischen Kommentar zum Schutz vor SQL-Injection ein, indem Sie das von Ihnen erstellte dynamische SQL maskieren.