请原谅这里介绍的初学者级代码 - 我只是学习PHP和MySQL,所以它应该都是非常基础的脚本。
我的数据库有两个表,团队和成员。 teams表具有主键teamID,这是member表中的外键。在列出每个成员的页面上的foreach循环中,我试图通过引用teamID列来访问teams表上的列。我玩过它,但我得到两件事之一:1)空白返回,似乎找不到任何匹配; 2)我正在尝试将数组更改为字符串的错误。
我会很感激任何见解 - 不是为了正确答案,而是更能让我理解我没有连接点的地方。提前谢谢。
<?php foreach ($members as $member) : ?>
<tr>
<td><?php echo $member['memberName']; ?></td>
<td><?php echo $member['memberDOB']; ?></td>
<td><?php echo get_member_team(); ?></td>
</tr>
在我的member_db.php页面上:
function get_member_team() {
global $db;
$query = 'SELECT teamName
FROM teams
WHERE teams.teamID = members.teamID';
$statement = $db->prepare($query);
$statement->execute();
$member_team = $statement->fetch();
$statement->closeCursor();
return $member_team;
}
答案 0 :(得分:1)
当你循环遍历成员时,你需要将当前迭代的团队ID传递给你的函数,并通过将它绑定到语句来在get_member_team
查询中使用它。
HTML更改:
<td><?php echo get_member_team( $member['teamID'] ); ?></td>
PHP更改:
function get_member_team( $team_id ) {
global $db;
$query = 'SELECT teamName
FROM teams
WHERE teams.teamID = :team';
$statement = $db->prepare($query);
$statement->bindParam(':team', $team_id, PDO::PARAM_INT);
$statement->execute();
$member_team = $statement->fetch();
$statement->closeCursor();
return $member_team[0];
}
但是,在初始查询中加入两个表可能是个更好的主意,因此您不必为循环中的每个项目进行另一个数据库调用。