Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyniki wyszukiwania PHP dają inny wynik, jeśli podasz tylko jedną literę

Twoje zapytanie sql musi odpowiednio pogrupować warunki

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

To, co robiłeś, jest równoważne z czymś takim w kodzie:

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

Jeśli to widzisz, może to być nieco jaśniejsze, jeśli pierwszy warunek nie powiedzie się (jedyny, który sprawdza, czy status == 'found' wtedy przejdzie do następnego warunku (po instrukcji OR) i sprawdzi tylko, czy lastname mecze.

Musisz pogrupować warunek instrukcji select, aby sprawdzał go poprawnie:

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

W tym przypadku grupujemy oba firstname i lastname warunki razem (w nawiasach), tak że cały warunek OR daje w wyniku pojedynczą odpowiedź prawda/fałsz, ta odpowiedź jest następnie stosowana do status sprawdź po.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oblicz średnią kolumny z zapytania MYSQL

  2. pobierz migawkę RDS

  3. „inteligentna” wyszukiwarka PHP do wyszukiwania porad dotyczących tabel Mysql

  4. Funkcja hasła MySQL

  5. Problem z dostępem do MySQL z Javy