我正在尝试将数据库数据复制到另一个数据库。我正在尝试使用以下无法正常工作的程序。我是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']."')");
}
请帮帮我。这里的用户名,密码和服务器都是同一个数据库。
答案 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);