2009-07-25 45 views
2

嘿,我正在尋找一種很好的方式來連接到MySQL中的至少2個數據庫使用PHP和收集表中的每個數據庫中的信息。在不同數據庫中連接多個表? MySql

表中將包含相關信息。例如。我在一個名爲'sites'的表中的一個數據庫('siteinfo')中有站點名稱。我還在另一個數據庫('sitedescriptions')的名爲'descriptions'的表中描述了網站描述。

我似乎無法讓這兩個數據庫相互交談。有誰知道我可以如何去做上述?我很新的PHP/MySQL。

此外,在「描述」表有三個信息行,也與在站點表中的一個站點。是否有可能讓這些行只與其相關的一個站點通話?

謝謝你的幫助。

回答

0

我總是使用我的表的全名。所以,如果一個命名錶A表在數據庫中調用DBA,我會做以下查詢:

 
SELECT * FROM dba.tablea 

這可以讓你真正的輕鬆切換數據庫。如果你不想記住要做到這一點,我也建議爲每個表的定義常量,此時你可以把它英寸

5

你不錯的策略可能是定義一個MySQL的用戶是對兩個數據庫都有相同的訪問權限。事情是這樣的:

GRANT ALL ON siteinfo.* TO [email protected] IDENTIFIED BY 'password'; 
GRANT ALL ON sitedescriptions.* TO [email protected] IDENTIFIED BY 'password'; 
FLUSH PRIVILEGES; 

一旦建立以該用戶的連接,你將有機會獲得這兩個數據庫,並可以通過數據庫名稱前綴的表名輕鬆地引用它們。

SELECT * FROM siteinfo.sites; 

你甚至可以用這種方式跨數據庫加入你的表,沒有任何困難。因此,要回答你的第二個問題,讓所有的三個描述行的網站,你可以這樣做(假設網站在每個數據庫,或者相同的名稱,或獨特的東西,你可以加入同一IDS):

SELECT * FROM 
    siteinfo.sites AS s LEFT JOIN 
    sitedescriptions.description AS d ON s.siteId=d.siteId 
WHERE s.siteId=123; 
相關問題