sql >> Databasteknik >  >> RDS >> Mysql

PHP/MySQL:Markera LÅT SOM frågeresultat

Observera att SOUNDS LIKE fungerar inte som du tror. Det motsvarar inte LIKE i MySQL, eftersom den inte stöder % jokertecken.

Det betyder att din fråga inte hittar "John David" när du söker efter "John". Detta kan vara acceptabelt om detta bara är din reserv, men det är inte idealiskt.

Så här är ett annat förslag (som kan behöva förbättras); använd först PHPs soundex() funktion för att hitta soundex för nyckelordet du letar efter.

$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%'";

Nu har du en lista med förnamn och efternamn som har en vag likhet i ljud (detta kan vara många poster, och du kanske vill öka längden på soundex-prefixet du använder för din sökning). Du kan sedan beräkna Levenshtein-avståndet mellan soundex för varje ord och din sökterm, och sortera efter det.

För det andra bör du titta på parametriserade frågor i MySQL för att undvika SQL-injektionsbuggar.



  1. Databasdesign:objekt med olika attribut

  2. Skicka data från Android till server via JSON

  3. SQL sammanfogar flera värden från kolumn till en cell

  4. MySQL endast inom innevarande månad?