我试图用左连接链接两个表,然后显示玩家的名字和他选择的角色,但当我回应结果时,我得到玩家的第一个姓名记录两次:
球员的名字:耶勒
球员的名字:耶勒
玩家角色的名字:Gandalf
玩家角色的名字:Aragorn
当我真正想要这个时:
球员的名字:耶勒
玩家角色的名字:Gandalf
玩家角色的名字:Aragorn
据我所知,如果玩家有两个角色,我会获得两次记录,但如何显示玩家的名字一次以及所有其他相应的角色?
This is my code:
try{
$statement = $connection->prepare('
SELECT *
FROM TBL_Player
LEFT JOIN TBL_Character
ON TBL_Player.ID = TBL_Character.Player_ID
WHERE TBL_Player.ID = 1;
');
$statement->execute();
while (($Player = $statement->fetch(PDO::FETCH_OBJ)) !== false){
echo "Player's first name: ".$Player->FirstName. "</br>";
echo "Player's Character's first name: ".$Player->CharacterFirstName. "</br>";
}
}
catch (PDOException $e){
echo 'ERROR: ' . $e->getMessage();
}
答案 0 :(得分:0)
您可以使用计数器,并且仅在第一次通过循环输出播放器名称:
$i=0;
while (($Player = $statement->fetch(PDO::FETCH_OBJ)) !== false){
if( $i == 0 ){
echo "Player's first name: ".$Player->FirstName. "</br>";
}
echo "Player's Character's first name: ".$Player->CharacterFirstName. "</br>";
$i++;
}
或者,如果你有多个玩家,你可以用数组跟踪
$aryTracker = array();
while (($Player = $statement->fetch(PDO::FETCH_OBJ)) !== false){
if( !in_array($Player->Id, $aryTracker) ){
echo "Player's first name: ".$Player->FirstName. "</br>";
$aryTracker[] = $Player->Id;
}
echo "Player's Character's first name: ".$Player->CharacterFirstName. "</br>";
}