我有一个数据库,在该数据库中我有一个ipbans
表,然后我也有一个用户表。users表中有一个名为lastip
的列,ipbans
表中有一个名为ip的表。
我需要比较最后一个提示到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为蓝色,如果不匹配,则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匹配ipban表和LastIP的用户。
您可以将两个查询合并为一个,如:
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中。