आपकी sql क्वेरी को आपकी शर्तों को ठीक से समूहीकृत करने की आवश्यकता है
$query=mysql_query("select * from persons where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by date desc LIMIT $start,$per_page ");
आप जो कर रहे थे वह कोड में कुछ इस तरह के बराबर है:
if (status == 'found' && firstname like 'a')
{
return row;
}
else if (lastname like 'a')
{
return row;
}
यदि आप इसे देखते हैं तो यह थोड़ा स्पष्ट हो सकता है, यदि पहली शर्त विफल हो जाती है (केवल वही जो जांचता है कि क्या status == 'found'
तो यह अगली स्थिति (OR स्टेटमेंट के बाद) पर जाएगा और केवल lastname
. की जांच करेगा मैच।
आपको अपनी चुनिंदा स्टेटमेंट कंडीशन को ग्रुप करना होगा ताकि वह इसे सही तरीके से चेक कर सके:
...where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by...
इस मामले में, हम दोनों firstname
. को समूहीकृत करते हैं और lastname
शर्तों को एक साथ (कोष्ठक में) ताकि संपूर्ण OR शर्त के परिणामस्वरूप एक ही सही/गलत उत्तर प्राप्त हो, उस उत्तर को तब status
पर लागू किया जाता है के बाद जाँच करें।