2010-08-14 5 views
0

J'ai deux bases de données, chacune contenant les adresses e-mail des utilisateurs. J'ai écrit un script qui a pour seul but de voir quelles adresses e-mail existent dans les deux bases de données.Conditionnel d'une boucle dans une boucle ne correspond pas

Cela étant dit, veuillez regarder les boucles suivantes. Chaque boucle contient des centaines d'enregistrements (j'ai imprimé les résultats de chacun comme une vérification). Cependant, lorsque le conditionnel trouve une correspondance, le conditionnel ne correspond qu'à l'adresse e-mail de la première correspondance. Il reste "coincé" sur l'enregistrement correspondant à la requête initiale. En d'autres termes, si elle correspond à "[email protected]", toutes les comparaisons futures sont contre "[email protected]". C'est presque comme si j'avais besoin d'une méthode "next()" pour déplacer les choses du premier tableau. FWIW, je suis un Noob PHP complet, donc je suis sûr qu'il y a quelque chose qui me manque ici.

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

Ces deux bases de données existent-elles dans le même serveur? Vous pouvez créer une requête qui s'étend sur les deux en utilisant le nom complet de la table. – whiskeysierra

+2

Avez-vous réellement deux bases de données, ou avez-vous simplement deux tables dans la même base de données? Pourriez-vous modifier pour inclure votre SQL? Comme l'a dit Willi, cela pourrait être beaucoup plus facile que de faire ces boucles imbriquées. –

+0

Deux bases de données distinctes, deux serveurs distincts. – Huuuze

Répondre

2

Je pense que le problème est que vous en boucle à travers un ensemble mysql-résultat, il y a un pointeur de données interne qui maintient en place une étape de glissement au niveau de chaque boucle.

Essayez de placer les résultats dans un tableau en premier.

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

vérifier ensuite votre résultat dans le tableau

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

Ou peut-être vous pouvez réinitialiser le DataPointer après chaque boucle, ne sais pas si vous pouvez le faire sur les résultats de MySQL, mais il fonctionne lors du bouclage des tableaux.

+0

Parfait! A + pour vous. – Huuuze