1

我正在尝试将列表中的 IP 地址与被阻止的 IP 列表进行比较。如果 IP 地址等于 $blockedIP 数组中的地址,则该行不包含在列表中。该列表由 mysqli_query 填充。如果 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 将值与数组进行比较。我应该把它放在哪里?谢谢。

4

2 回答 2

2

如果 IP 地址与数组中的一个匹配,我想做的是排除整行。

你有几个选择:

  1. 一个使用 SQL 的查询IN。用 压缩被阻止的 IP 地址implode()

    SELECT * FROM dl_log WHERE ipaddress NOT IN (...);
    
  2. 一次查询并使用 PHPin_array()过滤他的结果

    // SQL
    SELECT * FROM dl_log;
    
    // PHP
    if (!in_array($row['ipaddress'], $blockedIP))
    
于 2012-12-18T19:24:53.343 回答
0

如果您不想打印该行,请更改

if($row['ipaddress'] !== $ip){

if(!in_array($row['ipaddress'], $blockedIP)){
于 2012-12-18T19:27:10.237 回答