我试图从数据库中创建一个产品的搜索.
我的DB:
tbl_brand
-----------
brand_id Brand_name
1 Canon
2 Nikon
tbl_product
-------------
prod_id prod_name brand_id
1 Canon PowerShot A810 16MP Point & Shoot Digital Camera 1
2 Canon Digital Camera PowerShot 8MP Point & Shoot 1
3 PowerShot 8MP Point & Shoot Digital Camera 1
4 PowerShot 8MP Point & Shoot Digital 1
Run Code Online (Sandbox Code Playgroud)
我的搜索关键字:
$keyword = 'Camera';$keyword = 'Digital Camera';$keyword = 'Canon Digital Camera';$keyword = 'Canon Camera';我的查询
Select * from tbl_product where prod_name like '%$keyword%'
Run Code Online (Sandbox Code Playgroud)
我得到前三个关键字的结果.但对于第四个关键字,我得到结果为空.
Canon Camera - 关键字与产品名称不匹配.但所有产品仅限佳能品牌,所有产品仅限相机.
我需要显示"佳能相机"关键字的所有产品.我是php和mysql的新手.请帮忙.
尝试这个 MATCH .. AGAINST
以下是如何使其工作:
首先确保您的表使用MyISAM存储引擎.MySQL FULLTEXT索引仅支持MyISAM表.(编辑11/1/2012: MySQL 5.6为InnoDB表引入了一个FULLTEXT索引类型.)
ALTER TABLE tbl_product ENGINE=MyISAM;
Run Code Online (Sandbox Code Playgroud)创建全文索引.
CREATE FULLTEXT INDEX searchindex ON tbl_product(prod_name);
Run Code Online (Sandbox Code Playgroud)搜索一下!
$keyword = mysql_real_escape_string($keyword);
$query = mysql_query("SELECT * FROM tbl_product
WHERE MATCH(prod_name) AGAINST('$keyword')");
Run Code Online (Sandbox Code Playgroud)
请注意,您在MATCH子句中命名的列必须与您在全文索引定义中声明的列的顺序相同.否则它将无法工作.
| 归档时间: |
|
| 查看次数: |
7410 次 |
| 最近记录: |