0
我知道有一个向导谁可以回答这个...为什么此查询忽略包含USA的字段?
我有一个PHP/MySQL数据库,列出超过500个葡萄酒。使用表单,网络访问者可以通过酒名,国家,年份等搜索数据库。
我测试了两(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
- Country = varchar(20)
- 国家= NULL没有
- 全文索引:国家,生产者,葡萄酒,年份
所以我的问题是,什么是防止多术语代码(在顶块)从承认美国是一个有效的查询?
任何帮助将不胜感激,谢谢你们。
Chris
非常感谢dnagirl,我应该猜到了。我会看看我能做什么。返回一点.. – user1515259
我改变了FULL TEXT索引以排除国家/地区列,但它仍然没有正确地找到美国。有关我如何修改PHP查询的任何想法? - 见上面的代码,谢谢。 – user1515259
@ user1515259:我建议改变用户提交国家的方式。让他们使用选择列表或独家自动完成,以便国家可以是一个确切的而不是模糊的比较。然后你可以使用'WHERE country ='USA''。 – dnagirl