PHP - 无法关联结果并在MYSQL中获取它们

时间:2015-03-27 22:59:46

标签: php mysql database

所以在一个问题中=> How to fetch targeted results that are related in MYSQL?问了一个关于如何获取相关结果的问题,但我得到了一个答案,但此后我改变了格式。

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

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

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

我得到了要显示的数字,但是它没有显示每个用户名的正确数字,它会一直显示表中的总行数,而不是存在行的情况下每个用户的行数< / p>

<?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不太满意,因为我还在学习。

1 个答案:

答案 0 :(得分:0)

如果我理解正确您的UUID列是播放器的唯一标识符(key),那么两列中的值应该在此列上加入,如果这两列是的等于

鉴于这种理解,您的查询没有多大意义,因为您使用>=进行比较,使其选择您想要的记录,但也选择您不想要的记录。它应该是:

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