3

私はこのような非常に単純な検索クエリを持っています

select * from products_stock where (
    title like '%$searchterm%' or 
    short_desc like '%$searchterm%' or 
    long_desc like '%searchterm%'
)

long_desc列からヒットした場合、PHPで特別な動作をプログラムしたいと思います。検索が成功した列を強調するためにmysqlの結果を取得する方法はありますか?

4

1 に答える 1

3

派生フィールドを使用できます。見た目は醜いですが、機能します。

SELECT *, (title LIKE '%$searchterm%') AS found_in_title,
     (short_desc LIKE '%$searchterm%') AS found_in_short_desc
     etc...

LIKEは、結果セットのフィールドとしてブール値のtrue / falseを返し、ASエイリアスは、一致が発生したフィールドを示します。

これらの種類のものにはフルテキストインデックスを使用する方がおそらくはるかに良いことに注意してください。LIKE '%...%'一致ではインデックスを使用できず、「大きな」テーブルではパフォーマンスが大幅に低下します。

于 2012-12-04T14:56:38.270 に答える