1

リスト内の IP アドレスをブロックされた IP のリストと比較しようとしています。IP アドレスが $blockedIP 配列内のアドレスと等しい場合、その行はリストに含まれません。リストは mysqli_query から入力されます。私がしたいのは、IPアドレスが配列内の1つと一致する場合、行全体を除外することです.

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つと一致する場合、行全体を除外することです.

いくつかのオプションがあります:

  1. SQL を使用した 1 つのクエリIN。ブロックされた IP アドレスをimplode().

    SELECT * FROM dl_log WHERE ipaddress NOT IN (...);
    
  2. 1 つのクエリと PHP を使用in_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 に答える