代码之家  ›  专栏  ›  技术社区  ›  Daren Schwenke

php-mysql跨数据库连接

  •  9
  • Daren Schwenke  · 技术社区  · 16 年前

    假设我在同一个物理服务器上有两个独立的数据库,x和y。

    我的所有查询当前都已用完X。

    我发现我在Y中有一张表,我希望X可以加入。

    所以…现在我保留了一份X和Y中X和Y都需要的表的副本,但是Y中的数据不断变化,所以副本很快就过时了。对于这个应用程序来说并不重要,但是对于另一个我现在正在设计的应用程序来说,这是行不通的。

    X现在只需要对Y中的表进行读访问。

    有没有一种跨两个数据库进行连接的有效方法?

    我更喜欢MySQL解决方案,而不是用PHP打开多个数据库连接。

    谢谢您。

    编辑:那么这些线条会变成什么呢?:

    $conn = mysql_connect('localhost','username','password');
    @mysql_select_db('database_name',$conn)
    

    是的…这是一个旧的应用程序,因此是mysql而不是mysqli。假设我能把它转换过来。

    伊迪丝2:所以我没有具体说明 database_name.table_name 只需说明 table_name 我得到所选内容,以及我指定的位置 database.table_name 我得到了我想要的……正确的?是的。作品。

    edit3:在同一个数据库中进行跨数据库联接与联接会对性能产生重大影响吗?不。看起来也一样快。

    感谢大家的回答。

    4 回复  |  直到 16 年前
        1
  •  2
  •   Jakub    16 年前

    编辑: 那么这些线条会变成什么呢?:

    康尼= mysql_connect('localhost'、'username'、'password'); @mysql_select_db('数据库名称',$conn)

    mysql_select_db是可选的。因为它只选择要使用的活动数据库。 http://us3.php.net/manual/en/function.mysql-select-db.php

    是的…这是一个老应用程序,因此 而不是mysqli。假设我 可以转换它。

    我不认为使用MySQL与速度慢有任何关系,从我自己的研究来看,MySQLI和MySQL的速度提升并不多。现实世界的测试并没有显示出作为一个大性能的驱动程序。对于我所有的应用程序,我都坚持使用MySQL。

        2
  •  13
  •   longneck    16 年前

    您必须在另一个数据库中为该表创建别名:

    select a.id
         , b.foreign_id
      from database1.table1 a
      join database2.table1 b
        on b.foreign_id = a.id
    
        3
  •  4
  •   Asaph    16 年前

    如果这两个数据库在同一台服务器上,则只需在联接查询中使用数据库名称限定表即可。

    select * from database1.table1 as t1
     inner join database2.table2 as t2
     on t2.fk_id = t1.pk_id
    
        4
  •  1
  •   davetron5000    16 年前

    只使用SQL

    SELECT col1, col2 FROM foo f LEFT JOIN db2.bar b ON b.col1 = f.col1