将 MySQL 行与 PHP 数组值进行比较



我正在尝试将列表中的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 地址匹配。

您有以下几种选择:

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

    SELECT * FROM dl_log WHERE ipaddress NOT IN (...);
    
  2. 一个查询并使用 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)){

相关内容

  • 没有找到相关文章

最新更新