Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le résultat de la recherche PHP produit un résultat différent si vous ne donnez qu'une seule lettre

Votre requête sql doit regrouper correctement vos conditions

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

Ce que vous faisiez équivaut à quelque chose comme ceci dans le code :

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

Si vous voyez ceci, cela peut être un peu plus clair, si la première condition échoue (la seule qui vérifie si status == 'found' alors il passera à la condition suivante (après l'instruction OR) et ne vérifiera que si lastname correspondances.

Vous devrez regrouper votre condition d'instruction select afin qu'elle la vérifie correctement :

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

Dans ce cas, nous regroupons les deux firstname et lastname conditions ensemble (entre parenthèses) de sorte que toute la condition OU aboutisse à une seule réponse vrai/faux, cette réponse est ensuite appliquée au status vérifier après.