【问题标题】:PHP and MySQL compare dataPHP和MySQL比较数据
【发布时间】:2013-04-06 11:42:17
【问题描述】:

我有一个数据库,在那个数据库中我有一个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 匹配的用户。

【问题讨论】:

  • 添加列username ?
  • 我已经有一个用户名列,你不明白我的问题我想将用户表中lastip列中的IP地址与ipbans表中'ip'列中的IP进行比较并且只显示最终结果。

标签: php mysql sql if-statement while-loop


【解决方案1】:

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

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 中。

【讨论】:

    猜你喜欢
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多