2009-07-25 100 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;