Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在同一个PHP字段中分解多个ID_Php_Pdo - Fatal编程技术网

如何在同一个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)