Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PHP/MySQL:Sorot hasil kueri SUARA SEPERTI

Perhatikan bahwa SOUNDS LIKE tidak bekerja seperti yang Anda pikirkan. Itu tidak sama dengan LIKE di MySQL, karena tidak mendukung % karakter pengganti.

Ini berarti kueri Anda tidak akan menemukan "John David" saat menelusuri "John". Ini mungkin dapat diterima jika ini hanya cadangan Anda, tetapi ini tidak ideal.

Jadi, inilah saran yang berbeda (yang mungkin perlu diperbaiki); pertama gunakan PHP soundex() berfungsi untuk mencari soundex dari kata kunci yang anda cari.

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

Sekarang Anda akan memiliki daftar nama depan dan nama belakang yang memiliki kesamaan yang samar-samar dalam terdengar (ini mungkin banyak entri, dan Anda mungkin ingin menambah panjang awalan soundex yang Anda gunakan untuk pencarian Anda). Anda kemudian dapat menghitung jarak Levenshtein antara soundex setiap kata dan istilah pencarian Anda, dan mengurutkannya berdasarkan itu.

Kedua, Anda harus melihat kueri berparameter di MySQL, untuk menghindari bug injeksi 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. Kapan saya harus menggunakan UNSIGNED dan SIGNED INT di MySQL?

  2. Laravel Dari DB Mentah ke Fasih

  3. Saya tidak mengerti mengapa variabel saya NULL

  4. ASP.NET MVC 4, beberapa model dalam satu tampilan?

  5. Mengapa mysqldump dengan transaksi tunggal lebih konsisten daripada yang tidak?