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

时间:2011-11-22 06:59:48

标签: php mysql

我正在尝试将数据库数据复制到另一个数据库。我正在尝试使用以下无法正常工作的程序。我是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']."')");
}

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

4 个答案:

答案 0 :(得分:1)

不要这样做。 不会按照您的想法行事,并且将来会造成无限痛苦。如果需要在两个数据库之间复制数据,请使用数据库复制或查找其他解决方案。不要违反SPOT rule

答案 1 :(得分:1)

嗯,

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

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

这可以满足您的需求,即在一个数据库中选择,插入另一个数据库。

答案 2 :(得分: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教程)。

答案 3 :(得分: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);