(已编辑)
表“公司”:公司->“示例LTD”类别(Varchar)->“1,2,3,4”
当访问者选择查看类别编号为“1”的公司时,应显示“Example LTD”(也在 2,3 和 4 中)
我想 SELECT * FROM 公司 WHERE 类别(例如包含类别编号 1)有什么想法吗?
SELECT * FROM companies WHERE categories IN (1,3,6,9)
您可以在 php 中动态生成 IN-list:
$cats = join(',',$categories);
$sql = "SELECT * FROM companies WHERE id IN ($cats)";
但是请确保您的 $categories 数组是未受污染的(仅包含安全数据,以防止 MySQL 注入)!
您将类别存储在一个 CSV 字段中?哎哟!
好吧,如果用户只能选择一个类别,请使用 FIND_IN_SET:
SELECT * FROM companies WHERE FIND_IN_SET(categories,1)
有多个类别,没有这样的事情。使用循环生成不同的 FIND_IN_SET,以 . 分隔AND
。
上桌公司:
以及类别的链接表: