PDO查询中返回的额外列



我正在使用PDO内部连接三个表:"用户","团队"和中间表"teams_users"。 "teams_users"处理用户和团队之间的多对多关系。 许多用户可以在一个团队中。 每个团队可以有多个用户。

这个想法是从用户拥有权限的"teams"表中获取团队 ID 的数组(在表teams_users中(。

$username被传递到函数中。

当$query被回显时,它看起来像这样:

SELECT teams_users.team_id FROM users INNER JOIN teams_users ON users.id = teams_users.user_id INNER JOIN teams ON teams.id = teams_users.user_id WHERE users.username = :username ORDER BY teams.id ASC
public function findTeamsByUsername($username = "") {
    $query = "SELECT teams_users.team_id " .
            "FROM users " .
            "INNER JOIN teams_users " .
            "ON users.id = teams_users.user_id " .
            "INNER JOIN " . $this->table . " " .
            "ON " . $this->table . ".id = teams_users.user_id " .
            "WHERE users.username = :username " .
            "ORDER BY teams.id ASC";
    echo $query;
    $stmt = $this->pdo->prepare($query);
    $stmt->bindParam(':username', $username, PDO::PARAM_STR);
    $r = $stmt->execute();
//        $stmt->debugDumpParams();
    if (!$r) {
        return null;
    } else {
        // $teamSet = $stmt->fetchAll(PDO::FETCH_ASSOC);
        $teamSet = $stmt->fetchAll();
        return $teamSet;
    }
}

MySQL Workbench 中的输出是:team_id1阿拉伯数字

PHP 中的输出是:数组 ( [0] => 数组 ( [team_id] => 1 [0] => 1 ( [1] => 数组 ( [team_id] => 2 [0] => 2 ( (

PHP 中的输出是有意义的,除了 [0]=>1 和 [0]=>2 来自哪里? 我不明白的是粗体。选择不应该重新设置一列吗?

将返回简化为单个 ID 数组的奖励积分如下:[1,2]

尝试改用fetchAll(PDO::FETCH_COLUMN, 0)。 默认情况下,fetchAll()将返回一个包含关联索引和数字索引的"混合"数组。

相关内容

  • 没有找到相关文章

最新更新