MySQL LIKE Bildirimi ile İlgili Madde Bulma

3 Cevap php

Ben ilgili makalelerin bir listesini almak çalışıyorum. Örnek

$title = $fetch_content[article_name]; // example out put "Hello World, Ask A Question"
$rel_title = "Select * from tbl_content WHERE status='t' and article_name like '%$title' order by id desc limit 5";

Ayırmak için nasıl tek anahtar kelimeleri "Hello World, A Soru Sor".

3 Cevap

Her kelimenin içine başlık kırmak için PHP split işlevini kullanabilirsiniz:

$title_words = split($title);

$rel_title = 'select * from tbl_content where status = \'t\' and (1=0';

foreach($title as $word)
{
    $word = str_replace(',', '', $word);
    $word = mysql_real_escape_string($word);
    $rel_title .= ' or article_title like \'%' . $word . '%\'';
}

$rel_title .= ')';

echo $rel_title;

Ben de str_replace söz virgül kaldırmak için kullanılır. Bunları varsa Açıkçası, diğer karakterler için bu uygulayabilirsiniz.

Bu unutulmamalıdır ..

like '%$title'

Sadece ... 'başlığında' uç gibi öğeleri maç olacak, bu yüzden yapmak isteyebilirsiniz ...

LIKE '%$title%'

... Sadece 'başlığı' içeren öğeleri istiyorsanız. Ben de $ title değişkeni zaten kaçtı olduğunu tahmin. Değilse, do ...

LIKE '%" . mysql_real_escape_string($title) . "%'

Bob soru daha makale başlığı tek tek anahtar kelimeler için tam metin araması yapmak için nasıl çizgisinde olduğunu? Bazı veritabanları metin arama desteği; http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html, MySQL en açıklanmıştır