MYSQL在2个不同的服务器上连接和查询2个dbs

时间:2013-10-11 14:54:25

标签: php mysql

MYSQL在2个不同的服务器上连接和查询2个dbs

感谢任何帮助,

我一直在努力让这个工作, 并在本网站和其他网站上搜索了各种示例。 我正在尝试在同一台服务器上连接2 db。

我可以从每个单独的数据中获取数据,但我不知道如何用wrire代码来组合/加入数据

这是我基于众多帮助的错误代码 如何发布我在线阅读。欢迎任何帮助或线索。 如果我可以得到任何输出/打印我会很高兴

// connect to db1 contact info
$host1='db1hostname';
$user1='db1user';
$password1='db1pw';
$database1='db1user';

// connect to db2, phone call info
$host2='db2hostname';
$user2='db2user';
$password2='db2pw';
$database2='db2user';

$connect1 = mysql_connect($host1, $user1, $password1) OR DIE 
('Unable to connect to database! Please try again later.');

$connect2 = mysql_connect($host2, $user2, $password2) OR DIE 
('Unable to connect to database! Please try again later.');

// i think this is where things start to go wrong

mysql_select_db($database1, $connect1);
mysql_select_db($database2, $connect2);

    // i want to join these 2 tables from diff db by the caller info

是一个细胞编号         //数据库2信息来自电话记录表  并且无法更改,因此我无法通过表主ID连接2 tbls  因为我永远不知道db2中每个调用的id是什么,  我希望通过来电号码

连接2 db表
$data = mysql_query("SELECT `m`.`id`, `m`.`created`, `m`.`caller`, `m`.`content_text`, 
`c`.`iname`, `c`.`caller`  
FROM database1.contacts c, database2.messages m    
WHERE `c`.`caller` = `m`.`caller` ") or die(mysql_error()); 

// i then want to print the results to a table

while($info = mysql_fetch_array( $data )) 

2 个答案:

答案 0 :(得分:0)

连接到您的第一个数据库,当您想在第二个数据库中运行查询时,只需使用下面代码中的简单方法。

$query = "SELECT t1.*, t2.*
          FROM tableOfDB1 t1
          LEFT JOIN database2.tableOfDB2 t2 ON t1.ID = ts2.TableOne_ID
          ";

或者,如果您只想要来自db2的数据

 $query = "SELECT  t2.*
          FROM database2.tableOfDB2  t2";

在你的例子中试试这个

$data = mysql_query("SELECT `m`.`id` AS mID, `m`.`created` AS mCreated, `m`.`caller` AS mCaller, `m`.`content_text`, 
`c`.`iname` AS cIname, `c`.`caller` AS cCaller  
FROM database1.contacts c, database2.messages m    
WHERE `c`.`caller` = `m`.`caller` ") or die(mysql_error()); 

while( $row = mysql_fetch_array($data) )
{
  echo "<br>mCaller: ".$row['mCaller'];
 echo "<br>cCaller: ".$row['cCaller'];
}

答案 1 :(得分:0)

如果您说,数据库位于同一台服务器上,那么您可以通过一个连接执行所有操作。您必须在查询中明确您的数据库名称,但是您可以以非常直接的方式执行其他所有操作。

请参阅https://stackoverflow.com/questions/19039718/reference-column-in-seperate-database/19040228#19040228