从不同的表和不同的dbs中获取数据

时间:2012-11-19 12:00:04

标签: php mysql database

我想检索驻留在不同数据库中的两个不同字段。我的数据库连接设置如下:

 define ('DB_HOST',     'ipaddress1');
 define ('DB_USER',     'username1');
 define ('DB_PASSWORD', 'password1');
 define ('DB_DATABASE', 'ecbooks');
 $db_wink = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD, TRUE) or  die("Connection Error: " . mysql_error());
 mysql_select_db(DB_DATABASE) or die("Error connecting to Winkstore DB. " . mysql_error());

 // DB configuration parameters : magonwink
 define ('DB_REMOTE_HOST',     'ipaddress2');
 define ('DB_REMOTE_USER',     'username2');
 define ('DB_REMOTE_PASSWORD', 'password2');
 define ('DB_REMOTE_DATABASE', 'magsonwink');

 $db_magson = mysql_connect(DB_REMOTE_HOST, DB_REMOTE_USER,  DB_REMOTE_PASSWORD, TRUE) or die("Connection Error: " . mysql_error());
 mysql_select_db(DB_REMOTE_DATABASE, $db_magson) or die("Error connecting to magson wink DB. " . mysql_error());

 define ('CMS_DB_HOST',     'ipaddress3');
 define ('CMS_DB_USER',     'username3');
 define ('CMS_DB_PASSWORD', 'password3');
 define ('CMS_DB_DATABASE', 'mawinkcms');

 $db_rp = mysql_connect(CMS_DB_HOST, CMS_DB_USER, CMS_DB_PASSWORD, true) or die("Connection Error: " . mysql_error());
 mysql_select_db(CMS_DB_DATABASE, $db_rp) or die("Error connecting to DB. " . mysql_error());

但是当我使用这个查询时

 SELECT ecbooks.user.user_name AS field1, mawinkcms.purchase.USER_NAME AS field2 FROM ecbooks.user,mawinkcms.purchase
 $result     = mysql_query($query, $db_wink) or die("Couldn't execute query: " . mysql_error());
 while($row = mysql_fetch_assoc($result)){
 $users[] = $row;
 }

我收到错误无法执行查询。提前谢谢。

2 个答案:

答案 0 :(得分:1)

您必须将正确的链接标识符作为第二个参数传递给mysql_query函数:http://www.php.net/mysql_query

$ecbooks不存在(基于您提供的代码)。

如果您要访问的表位于ecbooks数据库中,则必须将$db_wink传递给mysql_query

但是,由于您尝试在同一查询中访问两个不同的数据库,因此必须使用可以访问这两个数据库的用户连接到数据库。发布您获得的实际错误也会有所帮助。

ps:请停止使用此扩展程序访问MySQL。有关详细信息,请参阅here

答案 1 :(得分:0)

首先,在寻求错误帮助时,最好包含错误本身。

其次,您的查询似乎没有连接条件,因此如果您确实要去,那么您将获得笛卡尔积 - 这可能不是您想要的。

第三,在运行查询时,它会针对您连接的数据库运行,无论您是否已连接到任何其他数据库。因此,在您的示例中,您正在对$ db_wink运行查询;其他两个连接根本不会影响这一点。

要使查询起作用,连接到$ db_wink的用户需要拥有数据库ecbooks和mawinkcms的权限,并且mawinkcms必须与ecbooks在同一服务器上运行。

我猜测未设置权限,或者您在不同的数据库上运行它们。