2011-11-22 47 views
0

我试图将数据库数据复制到另一个数据库。我正在尝试使用下面的程序不能正常工作。我是MySQL和PHP的新手在MySQL中连接另一个数据库while循环

<?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']."')"); 
} 

请帮帮我。这里的用户名,密码和服务器是相同的两个数据库。

+0

你的代码不是100%句法正确的 –

+1

以这种方式使用持久连接可能会超过MySQL允许的连接数。你有错误吗? –

+0

不要连接到循环中的数据库,它会影响代码的性能。并且不要使用mysql_pconnect,它比它的价值更麻烦。 – GordonM

回答

0

This question有答案,可以帮助你。

从答案: “

$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教程)。

1

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

0

您正在打开循环内的连接,而不是关闭它们。如上所述,这可能会导致超出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); 
1

嗯,

如果这两个数据库的连接参数都是一样的,你可以只使用包括在查询数据库名称的MySQL的语法:

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

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

相关问题