我有两个数据库,每个数据库都包含用户的电子邮件地址。我编写了一个脚本,其唯一目的是查看两个数据库中存在哪些电子邮件地址。
话虽如此,请查看以下循环。每个循环包含数百条记录(我已经打印出每个记录的结果作为验证)。但是,当条件发现匹配时,条件仅匹配第一个匹配的电子邮件地址。它仍然“卡在”与初始查询匹配的一条记录上。换句话说,如果它匹配“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/>";
}
}
}
答案 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结果上执行此操作,但在循环遍历数组时它可以正常工作。