php中,现在有业务逻辑是这样的,所有的用户都有个uppath字段,这个字段中包含了自己上级人的所有id字符串这些字符串都是以逗号拼接的,例如我想查我伞下一级人都有哪些,我可以查询所有用户的uppath字段中谁有我的id,我如何动态的查询伞下几级的所有人id呢
时间: 2024-03-21 19:42:01 浏览: 58
MySql逗号拼接字符串查询的两种方法
您可以使用 MySQL 中的 FIND_IN_SET 函数来实现动态查询伞下几级的所有人 id。具体步骤如下:
1. 假设您要查询的用户 ID 为 $userId,要查询的伞下级别为 $level。
2. 构造一个 SQL 语句,使用 FIND_IN_SET 函数查询 $userId 是否在所有用户的 uppath 字段中。
```
SELECT id, uppath FROM users WHERE FIND_IN_SET('$userId', uppath) > 0;
```
3. 遍历查询结果,将所有匹配的用户的 id 和 uppath 字段保存到一个数组中。
4. 遍历这个数组,对于每个匹配的用户,将其 uppath 字段按照逗号进行分割,取出分割后的数组中第 $level 个元素,即为该用户的 $level 级上级的 ID。
需要注意的是,如果您要查询伞下 $level 级的所有人,需要对步骤 4 进行递归,直到查询到 $level 级为止。同时,为了避免 SQL 注入,建议使用 PDO 或者 mysqli 进行参数绑定。
阅读全文