使用一个查询从多个sql-databases中进行选择

时间:2015-03-05 14:46:13

标签: mysql

目前,我将使用两个查询来选择来自不同数据库的数据。

以下是代码中的主要部分..

从数据库1查询

mysql_select_db("data1");
mysql_select_db("data2");
//bought databases connected
$query1 = "select * from ex.1 where value1='".$value1."' and value2='".$value2."'  order by number ASC;";
$run1 = mysql_query($query1);

从数据库2查询

$query2= " select * from ex.2 where value1='".$value1."' and value2='".$value2."'  order by number ASC;";
$run2 = mysql_query($query2);    

不同数据库中的两个表都将包含字符串"$value1""$value2"中的相同信息。

我想在一个查询中组合这两个字符串。这意味着将选择来自两个不同数据库的所有信息。

我尝试以下列方式使用JOIN:

$query = "select * from database1.ex.1 JOIN database2.ex.2 where value1='".$value1."' and value2='".$value2."'  order by number ASC;";
$run = mysql_query($query);

但没有成功.. 从这一切的意义是,我想将mysql-data从两个不同的数据库回显到同一个表。

while ($row=mysql_fetch_array($run)){   
echo '</tr><td>'.($row['something']).'</td><td>'.($row['more']).'</td><td>'.($row['and more']).'</td><td>'.($row['and more']).'</td><td>'.($row['and something from the database2']);

这样,所有信息都应该很好地回应,遵循从两个数据库中找到的几个字符串。

这可以理解吗?

2 个答案:

答案 0 :(得分:0)

你有正确的连接部分,但你有条款而不是on:

$query = "SELECT * FROM database1.ex.1 as db1 JOIN database2.ex.2 as db2 
ON(db1.value1='".$value1."' and db2.value2='".$value2."')  order by number ASC;";

您可以为db2.whatever更改db1.value1 / db1.value2。

答案 1 :(得分:0)

不要将mysql_ *用于PHP脚本,而应该使用MySQLI,因为不推荐使用mysql。

$db = new mysqli(host, user, password, database;

您还应该将字符串转义为更安全,并检查连接是否也已成功:

$dbhost = "xxx.xxx.xxx.xxx";
$dbuser = "xxxxxxx";
$dbpass = "xxxxxx";
$dbbase = "xxxxxx";

$db = new mysqli($dbhost, $dbuser, $dbpass, $dbbase);
if($db->connect_errno) {
    die('Could not connect to the database: ' . $db->connect_error);
}

您可以按照此操作重复多个数据库!