sql >> Database >  >> RDS >> Mysql

PHP-zoekresultaat geeft ander resultaat als u slechts één letter opgeeft

Uw sql-query moet uw voorwaarden correct groeperen

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

Wat je aan het doen was, komt overeen met zoiets als dit in code:

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

Als je dit ziet, is het misschien wat duidelijker als de eerste voorwaarde faalt (de enige die controleert of status == 'found' dan springt het naar de volgende voorwaarde (na de OR-instructie) en controleert alleen of lastname wedstrijden.

U moet uw select statement-voorwaarde groeperen zodat deze correct wordt gecontroleerd:

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

In dit geval groeperen we beide firstname en lastname voorwaarden samen (tussen haakjes) zodat de hele OF-voorwaarde resulteert in een enkel waar/onwaar antwoord, dat antwoord wordt dan toegepast op de status controleer daarna.




  1. Zoek en vervang string in BLOB for Work of Excel File

  2. SQL-gegevenstype om buildversies op te slaan

  3. Een datum ontleden uit niet-opgemaakte tekst in SQL

  4. Kan geen verbinding maken met externe database vanuit de kubernetes-pod