PDO 查询中返回的额外列
Extra column returned in PDO query
我正在使用 PDO 内部连接三个 tables:"Users"、"Teams" 和中介 table "teams_users"。 "teams_users" 处理用户和团队之间的多对多关系。许多用户可以在一个团队中。每个团队可以有很多用户。
我们的想法是从 "teams" table 用户有权限(在 table teams_users 中)获取团队 ID 数组。
$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;
}
}
MySQLWorkbench中的输出是:
team_id
1个
2
PHP 中的输出是:
数组([0] => 数组([team_id] => 1 [0] => 1)[1] => 数组([team_id] => 2 [0] => 2 ) )
PHP 中的输出是有意义的,除了 [0]=>1 和 [0]=>2 来自哪里?我不明白的是粗体。 select 不应该返回一栏吗?
将 return 简化为单个 ID 数组的奖励积分,如下所示:[1,2]
请尝试使用 fetchAll(PDO::FETCH_COLUMN, 0)
。 fetchAll()
默认情况下 return 一个 "mixed" 数组,同时具有关联索引和数字索引。
我正在使用 PDO 内部连接三个 tables:"Users"、"Teams" 和中介 table "teams_users"。 "teams_users" 处理用户和团队之间的多对多关系。许多用户可以在一个团队中。每个团队可以有很多用户。
我们的想法是从 "teams" table 用户有权限(在 table teams_users 中)获取团队 ID 数组。
$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;
}
}
MySQLWorkbench中的输出是: team_id 1个 2
PHP 中的输出是: 数组([0] => 数组([team_id] => 1 [0] => 1)[1] => 数组([team_id] => 2 [0] => 2 ) )
PHP 中的输出是有意义的,除了 [0]=>1 和 [0]=>2 来自哪里?我不明白的是粗体。 select 不应该返回一栏吗?
将 return 简化为单个 ID 数组的奖励积分,如下所示:[1,2]
请尝试使用 fetchAll(PDO::FETCH_COLUMN, 0)
。 fetchAll()
默认情况下 return 一个 "mixed" 数组,同时具有关联索引和数字索引。