2013-04-14 86 views
1

我有一个数据库,并在该数据库中有一个ipbans表,然后我也有一个用户表。 users表有一个名为lastip的列和ipbans表有一个名为ip的表。PHP和MySQL比较数据

我需要比较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匹配的用户。

+1

添加列'username'? – Gntem

+0

我已经有一个用户名列,你不明白我的问题 我想比较用户表lastip列中的IP地址与ipbans表'IP'列中的IP,并只显示最终结果。 – user2279125

回答

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。

+0

编辑该问题。 – user2279125

+0

更新了答案。 –