2

MYSQL 连接和查询 2 个不同服务器上的 2 个数据库

提前感谢您的帮助,

我已经尝试了一周来让它工作,并在这个网站和其他网站上搜索了各种例子。我正在尝试在同一台服务器上连接 2 db。

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

这是我基于大量帮助以及如何发布我在网上阅读的错误代码。欢迎任何帮助或线索。如果我能得到任何东西来输出/打印我会很高兴

// 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 个 tbl,因为我永远不知道每个 id 将是什么在 db2 中调用,我希望通过调用方单元号连接 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 )) 
4

2 回答 2

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'];
}
于 2013-10-11T15:01:26.967 回答
0

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

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

于 2013-10-11T15:07:02.267 回答