在MySQL while循环中连接另一个数据库


Connecting Another Database in MySQL while loop

我正在尝试将数据库数据复制到另一个数据库。我试图使用下面的程序,这是不工作。我是MySQL和PHP新手

<?php 
require_once('conf.php');
?>
<?php 
$q=mysql_query("SELECT * FROM navroop_mlm.".memberlogtbl." WHERE totalleft >='7' AND totalright >='7'");
while($r=mysql_fetch_array($q)){
$id=$r['id'];
$qlnk=mysql_pconnect("localhost", "navroop_mlm", "guwahati0011*");
mysql_select_db("navroop_aip", $qlnk);
mysql_query("INSERT INTO member_login (id, name, username, password,sex) VALUSE ('$id', '".$r['name']."', '".$r['username']."', '".$r['password']."', '".$r['sex']."')");
}

请帮帮我。

用户名,密码和服务器是相同的。

千万不要这样做。它不会做你认为它会做的事情,它将在未来造成无限的痛苦。如果需要在两个数据库之间复制数据,请使用数据库复制或寻找其他解决方案。不要违反SPOT规则

嗯,

如果两个数据库的连接参数相同,您可以使用MySQL语法,在查询中包含数据库名称:

INSERT INTO database2.member_login (id, name, username, password, sex)
SELECT id, name, username, password, sex from navroop_mlm.member_login;

这是你想要的,即在一个数据库中选择,插入到另一个。

这个问题的答案可以帮助你。

从答案中:"

$dbh1 = mysql_connect($hostname, $username, $password); 
$dbh2 = mysql_connect($hostname, $username, $password, true); 
mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);

然后查询数据库1,执行

mysql_query('select * from tablename', $dbh1);

和数据库2

mysql_query('select * from tablename', $dbh2);

"

我怀疑你可以在循环之前连接到数据库,然后在循环中使用第二个连接和INSERT INTO查询。

此外,一个更好的解决方案是使用PDO,它是标准mysql_函数的更好替代方案,并且更容易允许您在遍历第一个查询结果的同时查询第二个数据库。http://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html#4.3(一个基本的PDO教程)

您正在打开循环内的连接,而不是关闭它们。如上所述,它可能导致mysql服务器的连接阈值超过。

相反,您可以使用单独的连接

$conn1=mysql_connect("localhost", "navroop_mlm", "guwahati0011*");
$conn2=mysql_connect("localhost", "navroop_mlm", "guwahati0011*");
mysql_connect_db("navroop_mlm",$conn1);
mysql_connect_db("database2",$conn2);
$q=mysql_query("SELECT * FROM $memberlogtbl WHERE totalleft >='7' AND totalright >='7'",$conn1);
while($r=mysql_fetch_array($q))
{
$id=$r['id'];
mysql_query("INSERT INTO member_login (id, name, username, password,sex) VALUES ('$id', '".$r['name']."', '".$r['username']."', '".$r['password']."', '".$r['sex']."')",$conn2);
}
mysql_close($conn1);
mysql_close($conn2);