PHP-在MYSQL中关联结果和获取结果时出现问题


PHP - trouble associating results and fetching them within MYSQL

那么在一个问题中=>如何获取MYSQL中相关的目标结果?当被问到如何获取相关结果的问题时,我得到了答案,但后来我更改了格式。

对于我的项目,我有四个圆圈,它们的脸上会显示一个数字,如下所示:

<div class="front" style="background: #4094ee;">
    100
</div>

现在我想使用这些数字,例如,其中一个数字需要显示用户被禁止的次数(行)。如果该用户不在表中(从未被禁止),则返回数字0。

我得到了要显示的数字,但它没有显示每个用户名的正确数字,它一直显示表中的行总数,而不是每个用户的行数(如果存在的行)

<?php
try {
    $stmt = $db->prepare('SELECT player_data.uuid, banned_players.uuid FROM  player_data, banned_players WHERE username = :username and player_data.uuid >=  banned_players.uuid');
    $stmt->execute(array(':username' => $_GET['name']));
   } catch(PDOException $e){
    //if an error is thrown a message will display
    echo $e->getMessage();
    exit();
}
?>
<?php if ($stmt->rowCount() <= 1 ): ?>
0
<?php else: ?>
   <?php while(false !== ($row = $stmt->fetch(PDO::FETCH_ASSOC))): ?>
   <?php endwhile; ?>
<?php endif; ?>

我需要使用的列是来自表

   player_data:
       -uuid
       -username
   banned_players:
       -uuid(player_data needs to reference this for each player)
       -permanent(if the player is banned permanently this will return 0 or 1)
       -active(if the player's ban is active this will return 0 or 1)

如果可能的话,我想尽量避免对数据库表进行过多修改,甚至根本不修改。

其余表的设置方式是,每个用户都由其UUID而不是用户名引用。我正在尝试为用户关联每个表中的UUID

正如我之前提到的,我已经设法得到了一个数字来显示,但它不是我想要的数字。

所以这就是我的php,它非常混乱,我不确定如何修复它,对于我试图实现的目标,什么是最好的解决方案?

如果答案很明显,我也很抱歉,我对PHP不是很好,因为我还在学习。

如果我理解正确,您的UUID列是玩家的唯一标识符(key),因此在两列相等的情况下,两个表中的值应该是该列的JOINed。

考虑到这种理解,查询没有什么意义,因为您使用>=进行比较,使其选择您想要的记录,也选择您不想要的记录。应该是:

SELECT player_data.uuid, banned_players.uuid 
FROM  player_data, banned_players 
WHERE player_data.uuid = banned_players.uuid
AND player_data.username = :username 

也可以更明显地表示为:

SELECT player_data.uuid, banned_players.uuid 
FROM  player_data 
JOIN banned_players ON (player_data.uuid = banned_players.uuid)
WHERE player_data.username = :username