php - 连接到多个数据库

标签 php mysql sphinx

我正在使用 sphinx 进行站点搜索,效果很好,但现在我正在尝试连接到 2 个具有完全相同结构的 mysql 数据库,而 db2 是 db1 的延续,因此所有信息都应该顺利流动。我可以通过在代码中切换数据库名称轻松获得结果,但如何同时选择两者?

这是我正在使用的一些代码

$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");

如果我在 $CONF['mysql_database'] = "db1"; 中输入单个 mysql 数据库,此代码工作正常,但我需要从 db1db2。有谁知道我怎么能做到这一点?我也没有发布查询,因为我认为它不是很有用,它只是一个简单的选择查询,我相信你明白了。

最佳答案

如果数据库托管在同一台服务器上,您可以简单地在调用 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()。在这种情况下,确保将可选的 $link 参数传递给 all mysql_ 函数,因为默认行为是简单地使用最近的连接,这可能会导致各种错误。由于每个数据库都有一个单独的连接,您将无法运行访问两个数据库的单独查询。

关于php - 连接到多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6549219/

相关文章:

php - 如何通过 PHP 将特殊字符写入 MySQL?

php - 如何使用 oauth 或类似模型通过序列/许可机制保护 PHP 代码以发出客户端 - 服务器请求?

Mysql将空值修改为0

php - 选择像数组一样的位置

mysql - SELECT 不存在的地方与另一个 select 语句

php - 将图像上传到 mysqli 数据库时出现问题

php - 如何获得最大数量的不同值

php - Sphinx/MySQL UTF8 &™ 符号

mysql - 使用 Sphinx 提高 MySQL 的相关性分数进行全文搜索

ruby-on-rails - 如何在没有循环依赖的情况下使用 Thinking Sphinx 在 Rails 5 中索引多态 (STI) 模型?