PHP yardımı aracılığıyla Mysql arama

4 Cevap php

Ben bir TextField değişken $ dize var ...

Örneğin "BMW COUPE" içeriyor ...

Nasıl kelime eşleşmeleri için mysql db alan arama yapabilirsiniz??

NEREDE açıklama xxxxxxxxxxxxxxxxxxx db SELECT * FROM?

açıklama alan adı!

bu yüzden açıklama containse 'BMW' veya 'COUPE' ya bu alan dönmek eğer ...

Thanx

4 Cevap

Yeterli olabilir tam metin arama, bir alternatif, bir regexp işlevini kullanmaktır.

Sizin örnek sorgu sonra olabilir:

SELECT *
  FROM db
 WHERE description REGEXP '[[:<:]]$string1[[:>:]]' = 1
    OR description REGEXP '[[:<:]]$string2[[:>:]]' = 1

Bkz http://dev.mysql.com/doc/refman/5.1/en/regexp.html

MySQL tam metin arama özelliğini kullanarak:

SELECT field FROM base WHERE MATCH(description) AGAINST('BMW COUPE')

http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

Eğer aramak istediğiniz alanları bir FULLTEXT indeks eklemek gerekir:

 ALTER TABLE `table` ADD FULLTEXT `fulltest_test` (`field1`, `field2`)

Her tabloda sadece bir tam dizin ekleyebilirsiniz. İhtiyacınız Ama bunu gibi birçok alanlar ekleyebilirsiniz.

Bu iyi bir yol olabilir, ancak sql kullanmak istiyorsanız, sadece denemek olmayabilir

select * from db where description like '%BMW%' or description like '%coupe%';
$string = 'find me';
$stringParts = explode(' ', $string);
$sql = "SELECT * FROM table_name WHERE 1";
foreach ($stringParts as $word) {
    // notice the spaces after and before the %
    $sql .= " AND description LIKE '% " . mysql_real_escape_string(trim($string)) . " %' ";
}

Bu, her "kelime" etrafında boşluk olması gerekir ki istisna ile, hile yapmak gerekir. Yani varsa "bulmak-me" bir açıklama, o sonuçlarına dahil edilmeyecektir.