Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将多个值与多个值进行比较_Php_Mysql - Fatal编程技术网

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

Php 将多个值与多个值进行比较,php,mysql,Php,Mysql,这是我的问题 我有一个数组$cities,包含如下数值:1,45,34,12。。。我在数据库表“area”的一个名为“areas”的列中存储了多个值,如下所示: 2,34,24267 我需要将“area”中的值与数组$cities中的值进行比较(例如34=34),并获得至少有一个匹配项的每一行的id。所以基本上我需要比较多个值和 多个值 刚开始使用php,所以我不知道从哪里开始。谢谢。:) MYSQL能够通过使用的值列表进行搜索,其中x在(a,b,c)语法中。以你为例: $cities = im

这是我的问题

我有一个数组$cities,包含如下数值:1,45,34,12。。。我在数据库表“area”的一个名为“areas”的列中存储了多个值,如下所示: 2,34,24267

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


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

MYSQL能够通过使用
的值列表进行搜索,其中x在(a,b,c)
语法中。以你为例:

$cities = implode(',', $cities);
$query = "SELECT id FROM table WHERE area IN ({$cities})";
如果对数据库运行该查询,它将返回ID中存在匹配项的所有实例

编辑
我刚才看到您在一列中存储了多个值。这是一种不好的做法,您应该以原子方式分割数据,例如,每个字段的值不得超过1(查看)

也就是说,您最好使用扩展的REGEXP子句来执行搜索

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

您确实应该使用关联表而不是数据库中存储的数组。这些值需要转义。“你不能把它们扔进去。”塔德曼说,我给出的答案是可行的。如果你注意到我故意离开了数组的创建和DB调用。我唯一的目标是证明一个可行的查询来选择他想要的数据集,它确实做到了。这是可行的,但不会完全不顾后果地逃避。只要有可能,尝试用绑定的结构来指定查询,比如
REGEXP?
,而不是实际建议字符串插值是首选方法。我同意应该绑定它,而不是直接插入它,但假设数组来自非用户提供的数据,它本身并不安全。考虑到这个问题的性质,我认为准备好的陈述对于手头的话题来说有点过分。不过,我很感谢您的反馈。如果准备好的语句对某人来说“有点过分”,即某人不应该编写与数据库接口的代码,那么它们将造成巨大的损害。试着记住,作为一个例子,PDO最多需要半个小时来学习。不要认为这是某种不可逾越的障碍。