我知道那里有一个巫师可以回答这个问题......
我有一个列出 500 多种葡萄酒的 PHP / MySQL 数据库。使用表格,网络访问者可以按葡萄酒名称、国家、年份等搜索数据库。
我测试了两 (2) 个不同的查询。
我想使用的拒绝返回针对美国的国家特定搜索,但与西班牙、澳大利亚、意大利、加拿大或智利(甚至美国 - 我测试过)没有问题。
仅当用户输入恰好与美国产品匹配的葡萄酒名称或年份等时,才会显示美国。否则,它将美国视为不存在。
另一个代码(底部)返回所有美国搜索,但不搜索我需要的多个列/术语。
此代码将找不到针对美国的特定国家/地区搜索
$cob=mysql_real_escape_string($_POST['user-entry']); // remove the line below to prevent searching multiple terms $cob = '+' . str_replace(' ',' +',$cob); $sql = sprintf ( "SELECT CSPC, Country, Producer, Wine, Year, Price, MATCH ( CSPC, Country, Producer, Wine, Year ) AGAINST ( '&s' IN BOOLEAN MODE ) FROM winecellar WHERE MATCH ( CSPC, Country, Producer, Wine, Year ) AGAINST ( '%s' IN BOOLEAN MODE )", $cob, $cob ) . $pricerange;
此代码将找到针对美国的特定国家/地区搜索
$cob=mysql_real_escape_string($_POST['user-entry']); $sql="SELECT ID, CSPC, Country, Producer, Wine, Year, Price FROM winecellar WHERE ( CSPC LIKE '%" . $cob . "%' OR Country LIKE '%" . $cob ."%' OR Producer LIKE '%" . $cob ."%' OR Wine LIKE '%" . $cob ."%' OR Year LIKE '%" . $cob ."%' )" . $pricerange;
- MySQL 服务器版本:5.1.65-cll
- 国家 = varchar (20)
- 国家 = NULL 否
- 全文索引:国家、生产商、葡萄酒、年份
所以我的问题是,是什么阻止了多术语代码(在顶部块中)将 USA 识别为有效查询?
任何帮助将不胜感激,谢谢大家。
克里斯