2015-02-24 259 views
1

如何連接來自不同數據庫的兩個表格。一個數據庫是localhost,另一個在線。如何連接來自不同數據庫的兩個表格

$connectA = mysql_connect('localhost','root','','abc'); 
$connectB = mysql_connect('xxx','yyy','zzz','xyz'); 

我想從其中有數據庫ABCXYZ部門加入DEPARTMENT_NAME

+0

你需要做的處理PHP。由於數據庫不在同一臺服務器上,所以直接'JOIN's是不可能的。另外,從已棄用的'mysql_'函數集移開 - 查看'PDO'或'mysqli'。我假設'abc'和'xyz'參數正被用來創建一個新的鏈接,而不是重複使用前一個鏈接? – DaveyBoy 2015-02-24 12:07:20

回答

2

你不能只要通過join你的意思是使用SQL JOINS。這是因爲SQL查詢總是被髮送到特定的數據庫或服務器。

您需要發送兩個獨立的查詢,每一個數據庫,然後提供一些邏輯的PHP通過array_merge加入他們是(全連接)或一些更高級的腳本。

沒有看到自己的一些代碼不能幫助更多。

+0

可以用一個例子來解釋我。 – 2015-02-24 11:24:39

0

如果MySQL用戶同時訪問數據庫,他們是在同一主機上(即兩個數據塊都來自同一個連接訪問),您可以:

  • 保持一個連接開放,並呼籲mysql_select_db()交換必要之間。我不確定這是乾淨的解決方案,你最終可能會查詢錯誤的數據庫。

  • 在查詢中引用表時指定數據庫名稱(例如SELECT * FROM database2.tablename)。這可能是一個痛苦的實施。

另外請閱讀troelskn的答案,因爲如果你能夠使用PDO而不是舊的擴展,這是一個更好的方法。

+0

OP表示一個是localhost,另一個是在線的(我假設他在他的機器上使用php工作,並使用他的機器上的一個數據庫和一個來自互聯網的數據庫) – Forien 2015-02-24 12:49:47

0

如前所述,這是不可能的。 我會保存數據庫連接並在數據庫之間切換。

只是一個簡單的例子(與mysqli的)

$db1 = mysqli_connect("localhost", "my_user", "my_password", "world"); 
$db2 = mysqli_connect("localhost2", "my_user2", "my_password2", "world2"); 

然後當你想執行一個查詢

mysqli_query($db1, "SELECT * ..."); 

或其他數據庫

mysqli_query($db2, "SELECT * ..."); 

保存從結果您的查詢在數組中,然後使用例如array_merge加入它們。

http://php.net/manual/en/function.array-merge.php

相關問題