循环内的循环条件不匹配

时间:2010-08-14 15:35:58

标签: php mysql

我有两个数据库,每个数据库都包含用户的电子邮件地址。我编写了一个脚本,其唯一目的是查看两个数据库中存在哪些电子邮件地址。

话虽如此,请查看以下循环。每个循环包含数百条记录(我已经打印出每个记录的结果作为验证)。但是,当条件发现匹配时,条件仅匹配第一个匹配的电子邮件地址。它仍然“卡在”与初始查询匹配的一条记录上。换句话说,如果它匹配“test@test.com”,那么所有未来的比较都是针对“test@test.com”的。这几乎就像我需要一个“next()”方法来从第一个数组中移动东西。

FWIW,我是一个完整的PHP菜鸟,所以我确信这里有一些显而易见的东西。

while($member = mysql_fetch_array($members)){
    while($emailAddress = mysql_fetch_array($emailAddresses)){
        if ($member['email'] == $emailAddress['email']){
            echo $member['email'] . "<br/>";
        }
    }
}

1 个答案:

答案 0 :(得分:2)

我认为问题是你在mysql结果集中循环,有一个内部数据指针在每个循环中向上滑动一步。

首先尝试将结果放入数组中。

$adresses = array();
while($emailAddress = mysql_fetch_array($emailAddresses)){
    $adresses[] = $emailAddress['email'] ; 
    }

然后检查数组中的结果

while($member = mysql_fetch_array($members)){
   if(in_array($member['email'], $adresses)){
     echo $member['email'];
     }
   }

或许您可以在每次循环后重置数据窗口,不确定是否可以在mysql结果上执行此操作,但在循环遍历数组时它可以正常工作。