Php 从不同的表和不同的数据库获取数据

Php 从不同的表和不同的数据库获取数据,php,mysql,database,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

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

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

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

您必须将正确的链接标识符作为第二个参数传递给
mysql\u query
函数:

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

在您的情况下,如果要访问的表位于
ecbooks
数据库中,则必须将
$db\u wink
传递到
mysql\u query

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


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

首先,在请求错误帮助时,最好将错误本身包括在内

其次,您的查询似乎没有连接条件,因此如果您真的要使用笛卡尔积,您将返回笛卡尔积-这可能不是您想要的

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

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


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

通常,当我需要处理超过1 DB的数据时,我会连接到一个数据库,进行查询,存储结果,关闭连接,打开到下一个数据库的连接。。。等