आपको अपने कुछ AND को OR में बदलना होगा और फिर OR को कोष्ठक में बदलना होगा।
अभी आपको $vehicle MATCHes में से एक और दोनों . की भी आवश्यकता है $कीवर्ड मिलानों में से। इसके बजाय, मुझे लगता है कि आपको $वाहन या . में से किसी एक की आवश्यकता है $कीवर्ड मिलान।
साथ ही, मुझे लगता है कि आप $keyword मिलानों को एक 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 इंजेक्शन से खुद को बचाने के बारे में अनिवार्य टिप्पणी शामिल करता हूं।