php - mysql 逻辑有问题

标签 php mysql

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

我尝试通过创建一个sql LIKE请求来过滤 watch ,以过滤钢体、金体的 watch 。但是,当搜索金色机身的 watch 时,它也给了我镀金的钢制 watch ,因为它包含“金”字。

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

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

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

最佳答案

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

Material 表:

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

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

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

这将显示一款由金或金钢制成的 watch 。而且您的搜索速度会更快。

关于php - mysql 逻辑有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15349963/

相关文章:

php - 使用 Laravel 读取包含 500,000 条记录的 Excel 工作表

php - 如何将域名页面重定向到另一台主机?

php - 如何编写 sql 查询以显示带有结束日期列的特定时间段的任务提醒?

javascript - 根据下拉值自动填充文本框

php - 获取图像大小() : Filename cannot be empty

未找到 PHPUnit 类 TestCase

php - 我应该如何包含文档根目录之外的文件?

php 函数 fgetcsv() 在 cron 作业时出错

php - 计算php中字符串中四个字符的出现次数

mysql - 如何防止mysql用户显示所有数据库