如何在同一个PHP字段中分解多个ID
用户表如下所示: 用户表 分组表如下: 分组表 我正在使用这个代码。如何在同一个PHP字段中分解多个ID,php,pdo,Php,Pdo,用户表如下所示: 用户表 分组表如下: 分组表 我正在使用这个代码。 $sql = "SELECT groups.uid,groups.group_name FROM users INNER JOIN users ON users.uid=groups.uid"; $query = $dbh -> prepare($sql); $query->execute(); $results=$query->fetchAll(PDO::FETCH_
$sql = "SELECT groups.uid,groups.group_name FROM users
INNER JOIN users ON users.uid=groups.uid";
$query = $dbh -> prepare($sql);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
//$resul = explode(",", $results)
$cnt=1;
foreach($results as $result){
echo '<br>';
$getids = (explode(',', $result->uid));
foreach ($getids as $getid) {
//echo $getid . '<br>';
$id = $getid;
$sql = "SELECT user_name FROM users WHERE uid=:id";
$query = $dbh -> prepare($sql);
$query->bindParam(':id',$id, PDO::PARAM_STR);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
foreach($results as $result) {
echo $result->user_name . ', ' ;
}
}
}
?>
$sql=“从用户中选择groups.uid、groups.group\u名称
用户上的内部连接用户。uid=groups.uid”;
$query=$dbh->prepare($sql);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
//$resu=分解(“,”,$results)
$cnt=1;
foreach($results作为$result){
回声“
”;
$getids=(分解(“,”,$result->uid));
foreach($getid作为$getid){
//echo$getid。“
”;
$id=$getid;
$sql=“从uid=:id的用户中选择用户名”;
$query=$dbh->prepare($sql);
$query->bindParam(':id',$id,PDO::PARAM_STR);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
foreach($results作为$result){
echo$result->user_name.',';
}
}
}
?>
有人能给我解释一下吗?我很难理解。
感谢要获取每个组的所有用户列表,您可以使用单个SQL查询:
SELECT
groups.uid, groups.group_name,
users.uid, users.user_name
FROM groups
INNER JOIN users ON users.uid IN(groups.users)
在您的代码中,您正在分解
uid
,这是一个不带任何逗号的单整数,
,根据您的表。您的查询中有很多错误。请准确地告诉我们您想要实现什么。这是一个非常糟糕的数据库设计。检查:这是错误的。SQL不是那样工作的。带有逗号分隔列表的字符串是一个值。这与值列表不同。
$sql = "SELECT groups.uid,groups.group_name FROM users
INNER JOIN users ON users.uid=groups.uid";
$query = $dbh -> prepare($sql);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
//$resul = explode(",", $results)
$cnt=1;
foreach($results as $result){
echo '<br>';
$getids = (explode(',', $result->uid));
foreach ($getids as $getid) {
//echo $getid . '<br>';
$id = $getid;
$sql = "SELECT user_name FROM users WHERE uid=:id";
$query = $dbh -> prepare($sql);
$query->bindParam(':id',$id, PDO::PARAM_STR);
$query->execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
foreach($results as $result) {
echo $result->user_name . ', ' ;
}
}
}
?>
SELECT
groups.uid, groups.group_name,
users.uid, users.user_name
FROM groups
INNER JOIN users ON users.uid IN(groups.users)