sql >> Databasteknik >  >> RDS >> Mysql

PHP-sökresultat ger olika resultat om du bara anger en bokstav

Din sql-fråga måste gruppera dina villkor korrekt

$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 ");

Det du gjorde motsvarar något sånt här i koden:

if (status == 'found' && firstname like 'a')
{
    return row;
}
else if (lastname like 'a')
{
    return row;
}

Om du ser detta kan det vara lite tydligare om det första villkoret misslyckas (det enda som kontrollerar om status == 'found' då hoppar den till nästa villkor (efter OR-satsen) och kontrollerar bara om lastname matcher.

Du måste gruppera ditt urvalsutdrag så att det kontrollerar det korrekt:

...where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by...

I det här fallet grupperar vi båda firstname och lastname villkor tillsammans (inom parentes) så att hela ELLER-villkoret resulterar i ett enda sant/falskt svar, det svaret tillämpas sedan på status kolla efter.




  1. SqlBulkCopy Infoga med identitetskolumn

  2. behåll textområdets inmatningsformat efter att ha använt mysql_real_escape_string för att lagra

  3. TreeView-kontroll med underformulär

  4. Finns det något sätt att återställa efter commit i MySQL?