将多个值与多个值进行比较

时间:2014-02-04 16:31:27

标签: php mysql

这是我的问题。

我有数组$ cities包含这样的数值:1,45,34,12 ...我有多个值存储在数据库表'area'的名为'areas'的列中,如下所示: 2,34,24,267 ...

我需要将'areas'中的值与array $ cities中的值进行比较(例如34 = 34),并获得每行至少有一个匹配的id。所以基本上我需要比较多个值 多个值。

刚开始使用php,所以我不知道从哪里开始。谢谢。 :)

1 个答案:

答案 0 :(得分:0)

MYSQL能够使用WHERE x IN (a,b,c)语法按值列表进行搜索。所以对你的例子来说:

$cities = implode(',', $cities);
$query = "SELECT id FROM table WHERE area IN ({$cities})";

如果针对数据库运行该查询,它应该返回匹配的所有ID实例。

修改
我刚看到你在一个列中存储了多个值。这是一种不好的做法,您应该原子地拆分数据,例如:每个字段的值绝不应超过1(查看database normalization)。

话虽这么说,但最好的办法是使用扩展的REGEXP子句来执行搜索。

$cities = implode('|', $cities);
$query = "SELECT id FROM table WHERE area REGEXP '{$cities}'";