1

TABLE_GLOBAL_PRODUCTSを検索できるこのクエリがあります

$catglobal_sql = "
 select p.*, 
   case when 
     p.specials_new_products_price >= 0.0000 
     and p.expires_date > Now() 
     and p.status != 0 
   then p.specials_new_products_price 
   else p.products_price 
   end price 
 from ".TABLE_GLOBAL_PRODUCTS." p 
   INNER JOIN ".TABLE_STORES." s ON s.blog_id = p.blog_id 
 where 
   MATCH (p.products_name,p.products_description) AGAINST ('%".$search_key."%') 
   OR p.products_name like '%".$search_key."%' 
   order by p.products_date_added DESC, p.products_name";

ここでの問題は、そのようなフレーズで検索すると、Cotton Shirts正しい結果が表示されることです。ただし、のように1つの単語だけを入力するCottonと、のようなフレーズを入力した場合と同じように表示されるのではなく、結果が表示されませんCotton Shirts

4

1 に答える 1

0

MATCH ... AGAINST ...を使用する場合は、ワイルドカードとして%の代わりに*を使用してください。したがって、コードの一致部分は次のようになります。

..。

MATCH(p.products_name、p.products_description)AGAINST('*"。$search_key。"*')

..。

MATCHでは、ワイルドカードはわずかに異なります

0個以上の文字を一致させるには、

  • MATCH'*'で
  • LIKE'%'

任意の1文字の使用に一致させるには

  • MATCHで'?'
  • LIKE'_'
于 2012-07-01T01:40:47.877 に答える