我想检索驻留在不同数据库中的两个不同字段。我的数据库连接设置如下:
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;
}
我收到错误无法执行查询。提前谢谢。
答案 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在同一服务器上运行。
我猜测未设置权限,或者您在不同的数据库上运行它们。