One从多个不同的数据库中选择

时间:2014-08-07 08:20:08

标签: php arrays

大家好我想通过一个选择从多个数据库中获取数据,我想对其进行排序并应用条件

我有数据库连接保存在我的主数据库中,就像这样

$GLOBALS['connects'] = array();
$GLOBALS['prefixes'] = array();
$sql = mysql_query("SELECT * FROM shops ORDER BY ordering ASC",$connect);
while($data = mysql_fetch_assoc($sql)){
    $password = simple_decrypt($data['password']);
    $GLOBALS['connects'][$data['database']] = mysql_connect($data['host'],$data['user'],$password) or die ('bad data');
    $GLOBALS['prefixes'][$data['database']] = $data['prefix']; 
    mysql_select_db($data['database'], $GLOBALS['connects'][$data['database']]) or die ('bad select');  
}

然后我从全局数组变量

进行查询
$query = 'SELECT * FROM ';
$limit = count($GLOBALS['connects']);
$i = 0;
foreach($GLOBALS['connects'] as $key => $val){
    if(($i+1)==$limit){
        $query .= $key.'.'.$GLOBALS['prefixes'][$key].'orders';
    } else {
        $query .= $key.'.'.$GLOBALS['prefixes'][$key].'orders, ';
    } 
    $i++;  
}

结果是

"SELECT * FROM shop1.pr_orders, shop2.pl_orders, shop3.ps_orders, shop4.pt_orders"

现在我想让它工作也添加WHERE条件和ORDER BY

现在它应该显示每个订单,但它返回false

提示:

让假装从数据库中选择的表格没有共同点

2 个答案:

答案 0 :(得分:0)

我们可以说Table1位于Database1,而Table2位于Database2,您希望join他们只需SELECT

Select * FROM Database1.Table1 JOIN Database2.Table2 ON Table1.Id=Table2.Id

答案 1 :(得分:0)

只有当表位于同一MySQL服务器(同一主机)上的不同数据库中且已连接的用户具有对所有这些表的访问权限时,您构造的SELECT语句才有效。

但据我了解,您正在尝试从驻留在不同MySQL服务器中的表中进行SELECT。事情变得更复杂 - 有关于此的讨论:

另一种方法是分别连接到每个服务器,从表中选择SELECT记录,然后在PHP中手动合并 - 但我不确定是否是你想要的。