Mysql
 sql >> база данни >  >> RDS >> Mysql

Резултатът от търсенето в PHP извежда различен резултат, ако дадете само една буква

Вашата 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' след това ще премине към следващото условие (след оператора ИЛИ) и ще провери само дали lastname съвпадения.

Ще трябва да групирате вашето условие за оператор select, така че да го проверява правилно:

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

В този случай групираме и двете firstname и lastname условия заедно (в скоби), така че цялото условие ИЛИ да води до един отговор вярно/невярно, след което този отговор се прилага към status проверете след.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съединете две таблици и ги филтрирайте с клауза where

  2. Как да получите сума от две маси?

  3. Как да проверите дали даден низ е валидна ДАТА, ЧАС или ДАТА ЧАС

  4. Как да скриете MySQL низ за връзка - потребителско име и парола на GitHub (Java)

  5. PyMySQL променливи в заявки