连接不同数据库中的多个表? MySQL的

时间:2009-07-25 23:28:25

标签: php mysql database database-connection

嘿,我正在寻找一种使用php连接到mysql中至少2个数据库的好方法,并从表中的每个数据库中收集信息。

表格将包含相关信息。例如。我在名为“sites”的表中的一个数据库('siteinfo')中有站点名称。我还在另一个数据库('sitedescriptions')中的网站描述名为'description'。

我似乎无法让这两个数据库相互通信。有谁知道我怎么能做上述事情?我是php / mysql的新手。

此外,在“说明”表中,有三行信息与站点表中的一个站点相关。是否有可能让那些行只与它所涉及的一个站点交谈?

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

一个好的策略可能是定义一个对两个数据库具有相同访问权限的MySQL用户。像这样:

GRANT ALL ON siteinfo.* TO user@localhost IDENTIFIED BY 'password';
GRANT ALL ON sitedescriptions.* TO user@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

一旦以该用户建立连接,您就可以访问这两个数据库,并可以通过在表名前添加数据库名称来轻松引用它们。

SELECT * FROM siteinfo.sites;

您甚至可以毫无困难地以这种方式跨数据库加入您的表。因此,要回答第二个问题,要获取站点的所有三个描述行,您可以这样做(假设站点在每个数据库中具有相同的ID,或相同的名称,或者您可以加入的独特内容):

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

答案 1 :(得分:0)

我总是使用我的桌子的全名。因此,如果名为tablea的表位于名为dba的数据库中,我将执行以下查询:

SELECT * FROM dba.tablea

这使您可以非常轻松地切换数据库。如果您不想记住这样做,我还建议为每个表定义常量,这时您可以将其放入。