Truy vấn sql của bạn cần phải nhóm các điều kiện của bạn đúng cách
$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 ");
Những gì bạn đang làm tương đương với một cái gì đó như thế này trong mã:
if (status == 'found' && firstname like 'a')
{
return row;
}
else if (lastname like 'a')
{
return row;
}
Nếu bạn thấy điều này, nó có thể rõ ràng hơn một chút, nếu điều kiện đầu tiên không thành công (điều kiện duy nhất kiểm tra xem status == 'found'
sau đó nó sẽ chuyển sang điều kiện tiếp theo (sau câu lệnh OR) và chỉ kiểm tra xem lastname
phù hợp.
Bạn sẽ cần phải nhóm điều kiện câu lệnh đã chọn của mình để nó kiểm tra chính xác:
...where status like 'found' and (firstname like '%$searchtext%' or lastname like '%$searchtext%') order by...
Trong trường hợp này, chúng tôi nhóm cả firstname
và lastname
điều kiện cùng nhau (trong ngoặc đơn) để toàn bộ điều kiện HOẶC dẫn đến một câu trả lời đúng / sai, câu trả lời đó sau đó được áp dụng cho trạng thái status
kiểm tra sau.