如果我正确理解您的问题,如果您正在处理以逗号分隔的 ID 号字符串,那么将它们保持为这种格式可能是最简单的。原因是您可以在查询数据库时在 SQL 语句中使用它。
我假设您要运行SELECT
查询以获取已输入 ID 的用户,对吗?您想使用一种SELECT ... WHERE IN ...
语句,如下所示:
// Get the ids the user submitted
$ids = $_POST['ids'];
// perform some sanitizing of $ids here to make sure
// you're not vulnerable to an SQL injection
$sql = "SELECT * FROM users WHERE ID IN ($ids)";
// execute your SQL statement
或者,您可以使用explode
创建每个单独 ID 的数组,然后循环遍历,以便您可以对每个值进行一些检查以确保它是正确的,然后再将它们重新连接成一个可以在语句implode
中使用的字符串SELECT ... WHERE IN ...
.
编辑:对不起,忘了补充:就在数据库中存储用户 ID 列表而言,您可以考虑将逗号分隔列表存储为针对消息 ID 的字符串,但这有缺点(很难在其他表上进行 JOINS如果你需要)。或者,更好的选择是创建一个查找类型表,它基本上由两列组成:messageid
, userid
. 然后,您可以将每个人存储userid
在messageid
例如
messageid | userid
1 | 1
1 | 3
1 | 5
这种方法的好处是您可以使用此表连接其他表(也许您有一个单独的message
表来存储消息本身的详细信息)。
在这种方法下,您将在消息表中创建一个新条目,取回 id,然后将 userids 字符串分解为单独的部分,最后创建INSERT
语句以使用各个 id 和消息 id 插入数据。您需要制定其他机制来处理对消息的用户 ID 列表的任何编辑以及删除。
希望这是有道理的!