PHP和MySQL比较数据

PHP和MySQL比较数据,php,mysql,sql,if-statement,while-loop,Php,Mysql,Sql,If Statement,While Loop,我有一个数据库,在这个数据库中有一个ipbans表,还有一个users表。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,

我有一个数据库,在这个数据库中有一个ipbans表,还有一个users表。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,我想将它与ipbans表进行比较,只显示IP与ipbans表和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中。

添加列用户名?我已经有一个用户名列,但您不明白我的问题,我想将users表中lastip列中的IP地址与ipbans表中“IP”列中的IP地址进行比较,只显示最终结果。
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