PDO Left Join:显示记录一次而不是两次
PDO Left Join :Show record once instead of twice
我正在尝试 link 左联接两个表,然后显示玩家的名字和他选择的角色,但是当我回显结果时,我得到玩家的名字记录两次:
选手名:Jelle
选手名:Jelle
玩家角色的名字:甘道夫
玩家角色的名字:Aragorn
当我真正想要这个的时候:
选手名:Jelle
玩家角色的名字:甘道夫
玩家角色的名字: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();
}
你可以使用一个计数器,只在第一次循环时输出玩家名字:
$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>";
}
我正在尝试 link 左联接两个表,然后显示玩家的名字和他选择的角色,但是当我回显结果时,我得到玩家的名字记录两次:
选手名:Jelle
选手名:Jelle
玩家角色的名字:甘道夫
玩家角色的名字:Aragorn
当我真正想要这个的时候:
选手名:Jelle
玩家角色的名字:甘道夫
玩家角色的名字: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();
}
你可以使用一个计数器,只在第一次循环时输出玩家名字:
$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>";
}