2011-11-22 109 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; 

這就是你想要的,即在一個數據庫中選擇,插入到另一個數據庫中。