Запрос на две базы данных на двух серверах не подключается - PullRequest
0 голосов
/ 20 июня 2011

Я следовал много примеров по этому вопросу, но я просто не могу заставить это работать.Я могу с успехом запрашивать базы данных по отдельности, но не две в одном запросе.

Я пробовал использовать псевдонимы, ссылаясь на серверы в запросе ... ставить `` вокруг имен и т. Д..

Итак, это мой код

Строки подключения:

/// LOCAL DATABASE
$databaseprefix = "w-";
$mysqlHost = 'localhost';
$mysqlUser = 'web123-USER1';
$mysqlPass = 'SOMEPASSWORD';
$mysqlDB = $databaseprefix . 'DATABASE1';
$conn = mysql_connect($mysqlHost,$mysqlUser,$mysqlPass,true) or die('Could not connect to SQL Server on '.$mysqlHost.' '. mysql_error());

///select remote database to work with
$localDB = mysql_select_db($mysqlDB, $conn)  or die("x1 Couldn't open database $mysqlDB");

///////////// GET THE DATABASE WE WANT TO EDIT
$remoteHost = $_SESSION['localfolder'];
$remoteUser = $_SESSION['databaseuser'];
$remotePass = $_SESSION['databasepassword'];
$remoteDB = $_SESSION['database'];
$remoteconn = mysql_connect($remoteHost,$remoteUser,$remotePass,true) or die('Could not connect to SQL Server on '.$remoteHost.' '. mysql_error());

$clientDB = mysql_select_db($remoteDB, $remoteconn)  or die("x2 Couldn't open database $remoteDB");

Хорошо, тогда у меня есть

$query_string = "select 
`$remoteHost`.`$remoteDB`.`pages`.`page_title`, 
`$mysqlHost`.`$mysqlDB`.`c_users`.`name`
from `$remoteHost`.`$remoteDB`.`pages`
left join `$mysqlHost`.`$mysqlDB`.`c_users`
on `$remoteHost`.`$remoteDB`.`pages`.`created_by` = `$mysqlHost`.`$mysqlDB`.`c_users`.`user_id`";

echo $query_string;
//// Query the DB's
$query = mysql_query($query_string);

echo mysql_num_rows($query);

while($row = mysql_fetch_assoc($query)) {
    echo $row['name'] . ' | ' . $row['page_title'];
}

Вывод запросачто-то вроде этого

select `remoteaddress.co.uk`.`remote-DB`.`pages`.`page_title`, 
`localhost`.`w-DATABASE1`.`c_users`.`name` 
from `remoteaddress.co.uk`.`remote-DB`.`pages` 
left join `localhost`.`w-DATABASE1`.`c_users` on 
`remoteaddress.co.uk`.`remote-DB`.`pages`.`created_by` = `localhost`.`w-DATABASE1`.`c_users`.`user_id`

Оба поля соединения являются типами данных INT для соединения и одного сопоставления.Я не уверен, почему это не получится.Любая помощь будет оценена.

1 Ответ

1 голос
/ 20 июня 2011

Это потому, что ваше локальное соединение не может подключиться к удаленному хосту напрямую ...

Вы можете использовать 2 запроса, по одному для каждого сервера вместо

$query = mysql_query($query_string, $conn);
$query = mysql_query($query_string, $remoteconn);
...