Mysql选择数组

时间:2012-07-05 12:38:23

标签: php mysql select

(编辑)的

表“公司”: 公司 - > “示例LTD” 类别(Varchar) - > “1,2,3,4”

当访客选择查看分类号为“1”的公司时,“示例LTD”应显示(也在2,3和4中)

我想SELECT * FROM公司WHERE类别(例如包含类别编号1) 任何的想法?

1 个答案:

答案 0 :(得分:3)

SELECT * FROM companies WHERE categories IN (1,3,6,9)

您可以在php中动态生成IN列表:

$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分隔。

请将您的数据标准化:

制表公司:

  • CompanyID
  • 公司名称

以及类别的链接表:

  • 链路ID
  • CompanyID
  • 分类