mysql SEÇİMİ GİBİ sadece değişkene bütün kelimeleri aynı olmalıdır

2 Cevap php

Ben bir $ string değişken var, ve ben kullanabilir

 SELECT * FROM db WHERE description LIKE '%$string%' OR headline LIKE '%$string%'

Görüldüğü gibi, ben iki alan "açıklama" ve string değişken bunlardan herhangi maçları görmek için "başlık" aramak istiyorum.

Sorun Ben bütün sözcükleri eşleştirmek istiyorsanız olduğunu!

Ex: description "merhaba" varsa $ string bir 'h' ise, bu yeterlidir. Bu ne want.It tüm kelimeyi tek maç var değil!

Bunun için kelimelerle sorgu dizesi bölmek? ya da ne?

2 Cevap

Eşleşen tam kelimeyi isterseniz FULLTEXT arama çalışırken düşünmelisiniz. Bir önkoşul tablo MyISAM motorunu kullanıyor olmasıdır:

CREATE TABLE test (
  id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  headline VARCHAR(120) NOT NULL,
  description VARCHAR(255) NOT NULL,
  FULLTEXT(headline, description)
) ENGINE=MyISAM;

Öyle gibi maçlar için sorgulamak istiyorum:

SELECT *
FROM test
WHERE MATCH (headline,description) AGAINST('$string');

Bu alaka sonuçlarınızı sipariş yararı vardır.

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

Sizin örnek sorgu sonra olabilir:

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

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