1

我有一个数据库,在那个数据库中我有一个ipbans表,然后我还有一个用户表。users 表有一个名为的列lastip,该ipbans表有一个名为 ip 的表。

我需要将 lastip 与 ip 列进行比较,如果它们都匹配以显示数据,我已经在 mysql 中完成了它,但我不知道如何将它添加到我现有的 while 循环中,以查找用户是否被禁止或不是。

SELECT  
IF((SELECT INET_NTOA(b.ip) FROM ipbans AS b WHERE INET_NTOA(b.ip) = p.LastIP) IS NULL, concat('<font color=blue>', p.LastIP, '</font>'), concat('<font color=red>', p.LastIP, '</font>')) AS IPv4 
FROM players AS p WHERE p.Banned = 1

这样做会使 IP 如果匹配则变为蓝色,如果不匹配则使 IP 变为红色,但我想用用户名回显此数据。

编辑:

$sql = mysql_query("SELECT * FROM  `players` WHERE  `Banned` = 1");
while($row = mysql_fetch_array($sql)) {
    $username = $row['Username'];
    $lastip = $row['LastIP'];
    $level = $row['Level'];
    echo "<tr>";
    echo "<td>$username</td>";
    if ($lastip > 2){
        echo "<td>$lastip</td>";
    } else {
        echo '<td>IP not found in IPBans!</td>';
    }
        echo "<td>$level</td>";
        echo "<td>Location</td>";
        echo "</tr>";
}

我目前有以上作为我的查询,它进入玩家表并列出被禁止的玩家,从那里我想获取他们登录的最后一个 IP(已经使用 LastIP 列登录)并且我想将其与 ipbans 表进行比较,仅显示 IP 与 ipbans 表和 LastIP 匹配的用户。

4

1 回答 1

0

您可以将两个查询合并为一个,例如:

SELECT
    p.Username, p.Level,
    IF((SELECT INET_NTOA(b.ip) FROM ipbans AS b WHERE INET_NTOA(b.ip) = p.LastIP) IS NULL,
        concat('<font color=blue>', p.LastIP, '</font>'),
        concat('<font color=red>', p.LastIP, '</font>')) AS LastIP
FROM players AS p
WHERE p.Banned = 1

虽然我个人更喜欢在 PHP 中生成 HTML 代码,而不是在 SQL 中。

于 2013-04-14T08:04:55.200 回答