Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

यदि आप केवल एक अक्षर देते हैं तो PHP खोज परिणाम अलग परिणाम देता है

आपकी 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 पर लागू किया जाता है के बाद जाँच करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. निष्पादन विवरण के दौरान पीडीओ प्रभावित पंक्तियाँ थीं

  2. PHP के साथ डाउनलोड करने के लिए MySQL से बाइनरी फ़ाइल स्ट्रीम करें

  3. डेटाटाइम का उपयोग करते समय MySQL ग्रुप बाय डेट

  4. UTF8 एन्कोडिंग समस्या - अच्छे उदाहरणों के साथ

  5. MySQL तैयार वक्तव्य