【发布时间】:2011-01-10 22:25:49
【问题描述】:
我需要从两个独立服务器上的两个独立数据库中检索数据(用户名和电子邮件地址),并检查用户名是否仅存在于一侧而不存在于另一侧,并将结果显示在表格中。根据我的研究,不可能在 mySQL 中进行跨服务器查询,所以我试图在 PHP 中完成这一切,但我遇到了没有结果的问题,而且我的代码变得不可读。主要问题是我需要尽可能输出与用户名关联的电子邮件地址,但只有第一个数据库有用户名和电子邮件地址列表。我确信我的算法完全没有效率,我很想看到一些简单的解决方案。
$handle1 = mysql_connect($db_host1,$db_username1,$db_password1);
mysql_select_db($db_name, $handle1);
$query1 = "SELECT username, email, FROM tblservices";
$result1 = mysql_query($query1);
while($row = mysql_fetch_array($result1){
$arr1[]=array(username=>$row['username'],email=>$row['email']);}
$handle2 = mysql_connect($db_host2,$db_username2,$db_password2);
mysql_select_db($db_name, $handle2);
$query2 = "SELECT username from tblradius";
$result2 = mysql_query($query2, $handle2);
while($row = mysql_fetch_array($result2)){
$arr2[]=$row['username'];
}
echo "<p>List of users in DB1 and not DB2</p>";
$x=0;
foreach($arr1 as $row1) {
$user1=$row1['username'];
$email=$row1['email'];
foreach($arr2 as $user2) {
if ($user1==$user2) {
$x=1;
}
}
if ($x==0) {
echo "<p>$user1 - $email is not in DB2</p>";
}
$x=0;
}
}
echo "<p>List of users in DB2 and not DB1</p>";
$x=0;
foreach($arr2 as $user1) {
foreach($arr1 as $row2) {
$user2=$row2['username'];
if ($user1==$user2) {
$x=1;
}
}
if ($x==0) {
foreach($arr2 as $row3) {
$user3 = $row3['username'];
$email = $row3['email'];
if ($user1==$user3) {
echo "<p>$user3 $email - is in DB2 and not DB1</p>";
}
}
}
$x=0;
}
}
【问题讨论】: