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

PHP/MySQL:Wyróżnij wyniki zapytania SOUNDS LIKE

Zwróć uwagę, że SOUNDS LIKE nie działa tak, jak myślisz. Nie jest to odpowiednik LIKE w MySQL, ponieważ nie obsługuje % symbol wieloznaczny.

Oznacza to, że Twoje zapytanie nie znajdzie słowa „John David” podczas wyszukiwania hasła „Jan”. Może to być do zaakceptowania, jeśli jest to tylko twoja rezerwa, ale nie jest idealne.

Oto inna sugestia (która może wymagać poprawy); najpierw użyj PHP soundex() funkcja, aby znaleźć soundex słowa kluczowego, którego szukasz.

$soundex = soundex($word);
$soundexPrefix = substr($soundex, 0, 2); // first two characters of soundex
$sql = "SELECT lastname, firstname ".
    "FROM table WHERE SOUNDEX(lastname) LIKE '$soundexPrefix%' ".
    "OR SOUNDEX(firstname) LIKE '$soundexPrefix%'";

Teraz będziesz mieć listę imion i nazwisk, które mają niejasne podobieństwo w brzmieniu (może to być wiele wpisów i możesz chcieć zwiększyć długość prefiksu soundex, którego używasz do wyszukiwania). Następnie możesz obliczyć odległość Levenshteina między soundexem każdego słowa a wyszukiwanym hasłem i posortować według tego.

Po drugie, powinieneś przyjrzeć się sparametryzowanym zapytaniom w MySQL, aby uniknąć błędów wstrzykiwania SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. <textarea> i MYSQL do wyświetlania danych w php

  2. Przechowuj wrażliwe dane w Silverstripe 3.1

  3. Jak używać MySQL przez XAMPP?

  4. Ponowny problem z wydajnością tabeli MySQL MyISAM

  5. Jak skonfigurować strefę czasową xampp mysql i apache?