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
かどうかのみをチェックします。 一致します。
正しくチェックされるように、selectステートメントの条件をグループ化する必要があります:
...where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by...
この場合、両方のfirstname
をグループ化します およびlastname
OR条件全体が単一の真/偽の回答になるように(括弧内に)条件をまとめると、その回答がstatus
に適用されます。 後で確認してください。