0

携帯電話とタブレットを販売する検索フィールドを備えたサイトを持っています。検索Blackberry 9900しても結果は返されません。製品はBlackberry Bold 9900. 単語が欠落している場合に関連する製品を表示するソリューションが必要です。

私はこれを試しました:

$words=explode("_",$name);
foreach($words as $word){
   $whereClause.= ' product_name LIKE "%'.$word.'%" OR';
}
$whereClause=substr($whereClause,0,-2);
$productQuery='SELECT * FROM products WHERE'.$whereClause.' AND status=1 AND deleted=0 ORDER BY product_order';

検索するBlackberry Bold 9900と、 を含むすべての結果Blackberryが返されます。結果が関連するようにこれを修正するにはどうすればよいですか?

4

3 に答える 3

1

ここでは LIKE 演算子は役に立たないため、FULLTEXTの使用を検討する必要があります。

于 2013-09-06T14:33:12.253 に答える
0

変化する

$whereClause.= ' product_name LIKE "%'.$word.'%" OR';

$whereClause.= ' product_name LIKE "%'.$word.'%" AND';

$whereClause=substr($whereClause,0,-3);

もちろん。

これにより、名前に検索ボックス内のすべての単語が含まれる製品のみが検索されます (ただし、その単語だけである必要はありません)。

MySQL FULLTEXT 検索の方が良い方法かもしれませんが、MySQL 5.6 より前の MyISAM テーブルでのみサポートされています。

于 2013-09-06T14:39:14.707 に答える