我正在使用sphinx进行网站搜索,它运行良好,但现在我正在尝试连接到具有相同结构的2个mysql数据库,而db2是db1的延续,因此所有信息都应该流畅。我可以通过在代码中切换db名称来轻松获得结果,但是如何同时选择两者?
这是一些使用
的代码$CONF['sphinx_host'] = 'localhost';
$CONF['sphinx_port'] = 9312;
$CONF['mysql_host'] = "localhost";
$CONF['mysql_username'] = "user";
$CONF['mysql_password'] = "password";
$CONF['mysql_database'] = "db1";
$CONF['sphinx_index'] = "index index2";
$db = mysql_connect($CONF['mysql_host'],$CONF['mysql_username'],$CONF['mysql_password']) or die("ERROR: unable to connect to database");
mysql_select_db($CONF['mysql_database'], $db) or die("ERROR: unable to select database");
$sql = str_replace('$ids',implode(',',$ids),$CONF['mysql_query']);
$result = mysql_query($sql) or die($CONF['debug']?("ERROR: mysql query failed: ".mysql_error()):"ERROR: Please try later");
如果我将单个mysql数据库输入$CONF['mysql_database'] = "db1";
,此代码可以正常工作,但我需要从db1
和db2
中选择。有谁知道我怎么能做到这一点?此外,我没有发布查询,因为我认为它不是非常有用它只是一个简单的选择查询,我相信你明白了。
答案 0 :(得分:2)
如果数据库托管在同一台服务器上,您可以在调用mysql_select_db()
时随意选择一个数据库,然后使用databasename.
前缀限定SQL查询中的所有表名。您甚至可以在一个查询中混合和匹配来自两个数据库的表。例如
select h.lastname, h.firstname, p.petname
from db1.humans as h
left outer join db2.pets as p on p.human_id = h.id;
如果您不需要编写涉及两个数据库的查询,则只需每次需要切换数据库时再次调用mysql_select_db()
。
如果数据库托管在不同的服务器上,则需要对mysql_connect()
进行2次单独调用。在这种情况下,请确保将可选的$link
参数传递给所有 mysql_
函数,因为默认行为是简单地使用最新的连接,这可能会导致各种虫子由于每个数据库都有一个单独的连接,因此您将无法运行访问这两个数据库的单个查询。