Php PDO查询中返回的额外列
我使用PDO内部连接三个表:“用户”、“团队”和中间表“团队用户”。“teams\u users”处理用户和团队之间的多对多关系。许多用户可以加入一个团队。每个团队可以有许多用户 其思想是从用户有权限的“teams”表(在teams\u users表中)获取团队ID的数组 $username被传递到函数中 回显$query时,如下所示:Php PDO查询中返回的额外列,php,mysql,arrays,pdo,resultset,Php,Mysql,Arrays,Pdo,Resultset,我使用PDO内部连接三个表:“用户”、“团队”和中间表“团队用户”。“teams\u users”处理用户和团队之间的多对多关系。许多用户可以加入一个团队。每个团队可以有许多用户 其思想是从用户有权限的“teams”表(在teams\u users表中)获取团队ID的数组 $username被传递到函数中 回显$query时,如下所示: SELECT teams_users.team_id FROM users INNER JOIN teams_users ON users.id = teams
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中的输出是:
团队id
1.
二,
PHP中的输出为:
数组([0]=>Array([team\u id]=>1[0]=>1)[1]=>Array([team\u id]=>2[0]=>2)
除了[0]=>1和[0]=>2来自何处之外,PHP的输出是有意义的?我不懂的是粗体字。select不应该返回一列吗
将返回简化为单个ID数组的好处如下:[1,2]尝试使用
fetchAll(PDO::FETCH_列,0)
。默认情况下,将返回包含关联索引和数字索引的“混合”数组。请打开手册。感谢手动参考。我的经验法则是在提问之前花20-30分钟解决一个问题。