Bemærk at SOUNDS LIKE
virker ikke som du tror. Det svarer ikke til LIKE
i MySQL, da den ikke understøtter %
jokertegn.
Det betyder, at din forespørgsel ikke finder "John David", når du søger efter "John". Dette kan være acceptabelt, hvis dette blot er din reserve, men det er ikke ideelt.
Så her er et andet forslag (som måske trænger til forbedring); Brug først PHP'er soundex()
funktion for at finde soundex for det søgeord, du leder 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 liste over fornavne og efternavne, der har en vag lighed i lyden (dette kan være mange poster, og du vil måske øge længden af soundex-præfikset, du bruger til din søgning). Du kan derefter beregne Levenshtein-afstanden mellem soundex af hvert ord og dit søgeord og sortere efter det.
For det andet bør du se på parametriserede forespørgsler i MySQL for at undgå SQL-injektionsfejl.