这是我的问题。
我有数组$ cities包含这样的数值:1,45,34,12 ...我有多个值存储在数据库表'area'的名为'areas'的列中,如下所示: 2,34,24,267 ...
我需要将'areas'中的值与array $ cities中的值进行比较(例如34 = 34),并获得每行至少有一个匹配的id。所以基本上我需要比较多个值 多个值。
刚开始使用php,所以我不知道从哪里开始。谢谢。 :)
答案 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}'";