我有一个手表在线商店。它有一个搜索过滤器。过滤的一个标准是手表的材料。它有很多独特的价值。例如:“钢”,“带金的钢”,“带镀金的钢”。
我试图通过创建一个sql LIKE请求来过滤手表,以过滤带有钢体,金体的手表。但是当寻找带有金色机身的手表时,它也给了我带镀金的钢表,因为它包含“黄金”这个词。
你能提出一个很好的解决方案来解决这个问题吗?
到目前为止,我尝试了这个sql语句:
SELECT * FROM `watches` WHERE `material` LIKE "%gold%"
答案 0 :(得分:2)
如果我这样做,我会创建一个名为“Material”的表,并为每个可用材料添加一条记录,然后将材质ID存储在watches表中而不是单词中。 (这有很多原因。)
材料表:
id - Material
1 - Gold
2 - Gold Plated
3 - Silver
4 - Steel with Gold
然后在您的搜索中,您将允许用户选择他们感兴趣的材料,您的SQL看起来像这样:
Select * from Watches where Material IN (1,4);
这将推出一款由黄金或钢金制成的手表。而且您的搜索速度会更快。
答案 1 :(得分:0)
$criterium = "gold";
$query = mysql_query("SELECT * FROM watches WHERE material = '$criterium'");
它应该可以解决你的问题。还要检查SQL LIKE条件以进一步查询