我需要一些帮助,以便从序列化的ID字段中获取与特定公司相关联的用户数。
TABLE_USER
user_id
user_name
user_companies <- Serialized id field
如果我有一个INT字段,我可以通过这种方式获得价值:
SELECT * FROM table_user WHERE user_companies = 1
但是,如何从序列化字段中获取总用户数? 任何一个例子将不胜感激
TKS全部
答案 0 :(得分:1)
这不是使用数据库的方法。理想情况下,您应该与用户和公司建立联合表。运行一个选择,反序列化并插入到可以加入的新表中的脚本并不困难。但假设你必须在PHP中这样做:
// SELECT * FROM table_user
$company_id = 1;
while($row = your_fetch_array()) {
if(in_array($company_id, unserialize($row['user_companies'])) {
$results[] = $row;
}
}
要在结果数组中获取未序列化的公司:
while($row = your_fetch_array()) {
$companies = unserialize($row['user_companies']);
if(in_array($company_id, $companies) {
$results[] = array_merge($row, array('user_companies' => $companies));
}
}
您没有提及您的数据库或API,因此请像往常一样查询和获取。
如果您使用JSON(仍然不推荐),那么您可能会从MySQL JSON Functions获得一些里程数。