0

我有一家手表网上商店。它有一个搜索过滤器。过滤的标准之一是表身的材料。它有很多独特的价值。例如:“钢”、“钢镀金”、“钢镀金”。

我试图通过创建一个 sql LIKE 请求来过滤手表,以过滤钢体、金体的手表。但是,当搜索带有金色机身的手表时,它也会给我镀金的钢表,因为它包含“金”这个词。

你能提出一个好的解决方案来解决这个问题吗?

到目前为止,我尝试了这个 sql 语句:

SELECT * FROM `watches` WHERE `material` LIKE "%gold%"
4

2 回答 2

2

如果我这样做,我将创建一个名为“Material”的表并为每种可用材料添加一条记录,然后将材料 ID 存储在手表表中而不是单词中。(这有很多更好的原因。)

材料表:

id - Material
1 - Gold
2 - Gold Plated
3 - Silver
4 - Steel with Gold

然后在您的搜索中,您将允许用户选择他们感兴趣的材料,您的 sql 将如下所示:

Select * from Watches where Material IN (1,4);

这将带来一块由金或钢制成的手表。您的搜索会更快。

于 2013-03-11T23:14:17.517 回答
0
$criterium = "gold";
$query = mysql_query("SELECT * FROM watches WHERE material = '$criterium'");

它应该可以解决您的问题。还要检查 SQL LIKE 条件以进行进一步查询

于 2013-03-11T22:52:01.477 回答