0

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

 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;
 }

我收到一个错误,无法执行查询。提前致谢。

4

2 回答 2

1

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

$ecbooks不存在(根据您提供的代码)。

在您的情况下,如果您要访问的表在ecbooks数据库中,则必须传递$db_winkmysql_query.

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

ps:请停止使用此扩展访问 MySQL。有关详细信息,请参见此处

于 2012-11-19T12:13:02.017 回答
0

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

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

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

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

我猜要么没有设置权限,要么你在不同的数据库上运行它们。

于 2012-11-19T12:34:39.393 回答