PHP - 使用数字/逗号搜索多行

时间:2016-08-26 18:22:10

标签: php mysql

我在我的数据库中创建了一个用户组和一个用户表,名为testuser_test。每个用户都有一个名为groups的字段,该字段至少包含一个数字,但也可以包含多个数字,例如1,2,3。用户组表存在idgroup_name

我现在一直试图做的是从这个用户被分配到的所有组中获取数据。例如,如果将一个用户分配给组1,2,3(如数据库中所示),则会打印出具有这些ID的每个组的名称。也许它打印出group 1 group 2 group 3

$user_test = $this->mysqli->query("SELECT user_id,groups FROM user_test WHERE user_id = '1'");
while($user_test_fetch = $user_test->fetch_array()) {
    $groups = $user_test_fetch["groups"];
}

if(strlen($groups) > 1) { // user has more than 1 group
    // ???
} else { // user does not have more than 1 group
    $search = "id = '".$groups . "'";
}

$group_data = $this->mysqli->query("SELECT * FROM test WHERE ".$search."");
while($group_data_fetch = $group_data->fetch_array()) {
    echo $group_data_fetch["group_name"];
}

或者,如果您有其他任何方式可以执行此任务,请随时向我展示!我只是想学习如何完成这项任务(最好尽可能高效)。

1 个答案:

答案 0 :(得分:1)

很简单。
如果它以1,2,3格式存储。假设一个名为1且ID为INTBIGINT(否则如果VARCHAR此查询将减慢)

更改

if(strlen($groups) > 1) { // user has more than 1 group
// ???
} else { // user does not have more than 1 group
$search = "id = '".$groups . "'";
}

$search = "id IN (".$groups.");

这一行可用于单个组或一组组,只要它用逗号分隔(因为SQL喜欢逗号)