我正在尝试将列表中的IP地址与被阻止的IP列表进行比较。 如果 IP 地址等于 $blockedIP 数组中的地址,则该行不会包含在列表中。该列表从mysqli_query填充。 我想做的是排除整行,如果 IP 地址与数组中的 IP 地址匹配。
echo '<div class="genericTable"><h2>Downloaded Sermons Report</h2><table>';
$blockedIP = array('69.58.178.58', '173.199.115.123', '173.199.120.99');
foreach($blockedIP as $ip){
$sql = mysqli_query($db, "SELECT * FROM dl_log WHERE ipaddress <> '".$ip."'");
while($row = mysqli_fetch_assoc($sql)){
echo '<tr>';
if($row['ipaddress'] !== $ip){
foreach($row as $each){
echo '<td class="genericTable">'.$each.'</td>';
}
}
echo '</tr>';
}
}
echo '</table></div>';
我已经尝试了几种不同的脚本,要么获取整个列表,要么将每一行和每一列都与数组进行比较,这使得表格看起来很突出。 我正在使用 foreach 将值与数组进行比较。 我应该把它放在哪里?谢谢。
我想做的是排除整行,如果 IP 地址与数组中的 IP 地址匹配。
您有以下几种选择:
-
一个使用 SQL
IN
的查询。使用implode()
压缩被阻止的 IP 地址。SELECT * FROM dl_log WHERE ipaddress NOT IN (...);
-
一个查询并使用 PHP
in_array()
来过滤结果// SQL SELECT * FROM dl_log; // PHP if (!in_array($row['ipaddress'], $blockedIP))
如果您不想打印出该行,请更改
if($row['ipaddress'] !== $ip){
自
if(!in_array($row['ipaddress'], $blockedIP)){