php PHP如何同时连接2个数据库
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/235264/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to connect to 2 databases at the same time in PHP
提问by Darryl Hein
I am trying to connect to 2 databases on the same instance of MySQL from 1 PHP script.
我正在尝试从 1 个 PHP 脚本连接到同一 MySQL 实例上的 2 个数据库。
At the moment the only way I've figured out is to connect to both databases with a different user for each.
目前我想出的唯一方法是使用不同的用户连接到两个数据库。
I am using this in a migration script where I am grabbing data from the original database and inserting it into the new one, so I am looping through large lists of results.
我在迁移脚本中使用它,我从原始数据库中获取数据并将其插入到新数据库中,因此我正在循环浏览大量结果。
Connecting to 1 database and then trying to initiate a second connection with the same user just changes the current database to the new one.
连接到 1 个数据库然后尝试与同一用户启动第二个连接只会将当前数据库更改为新数据库。
Any other ideas?
还有其他想法吗?
回答by Lucas Oman
You'll need to pass a boolean true as the optional fourth argument to mysql_connect(). See PHP's mysql_connect() documentationfor more info.
您需要将布尔值 true 作为可选的第四个参数传递给 mysql_connect()。有关更多信息,请参阅PHP 的 mysql_connect() 文档。
回答by Joe Lencioni
If your database user has access to both databases and they are on the same server, you can use one connection and just specify the database you want to work with before the table name. Example:
如果您的数据库用户可以访问这两个数据库并且它们在同一台服务器上,您可以使用一个连接并在表名之前指定您要使用的数据库。例子:
SELECT column
FROM database.table
Depending on what you need to do, you might be able to do an INSERT INTOand save a bunch of processing time.
根据您需要做什么,您可能能够执行INSERT INTO并节省大量处理时间。
INSERT INTO database1.table (column)
SELECT database2.table.column
FROM database2.table
回答by Gaurav
Lucas is correct. I assume that both the databases are hosted on the same host.
卢卡斯是对的。我假设两个数据库都托管在同一台主机上。
Alternatively, you can create only 1 db connection and keep swapping the databases as required. Here is pseudo code.
或者,您可以仅创建 1 个 db 连接并根据需要继续交换数据库。这里是伪代码。
$db_conn = connect_db(host, user, pwd);
mysql_select_db('existing_db', $db_conn);
-- do selects and scrub data --
mysql_select_db('new_db', $db_conn);
-- insert the required data --
回答by The.Anti.9
I would suggest using two connection handlers
我建议使用两个连接处理程序
$old = mysql_connect('old.database.com', 'user', 'pass);
mysql_select_db('old_db', $old);
$new = mysql_connect('new.database.com','user','pass);
mysql_select_db('new_db', $new)
// run select query on $old
// run matching insert query on $new
回答by Gary Richardson
If it's an option, use PDO: you can have as many database connections open as you like.
如果这是一个选项,请使用 PDO:您可以根据需要打开任意数量的数据库连接。
Plus, assuming your executing the same queries over and over, you can use prepared statements.
另外,假设您一遍又一遍地执行相同的查询,您可以使用准备好的语句。
回答by Rajpal Singh
You can easily use 2 databases in same time with following Codes:
您可以使用以下代码轻松同时使用 2 个数据库:
<?php
define('HOST', "YOURHOSTNAME");
define('USER', "YOURHOSTNAME");
define('PASS', "YOURHOSTNAME");
define('DATABASE1', "NAMEOFDATABASE1");
define('DATABASE2', "NAMEOFDATABASE2");
$DATABASE1 = mysqli_connect(HOST, USER, PASS, DATABASE1);
$DATABASE2 = mysqli_connect(HOST, USER, PASS, DATABASE2);
if(!$DATABASE1){
die("DATABASE1 CONNECTION ERROR: ".mysqli_connect_error());
}
if(!$DATABASE2){
die("DATABASE2 CONNECTION ERROR: ".mysqli_connect_error());
}
$sql = "SELECT * FROM TABLE"; /* You can use your own query */
$DATABASE1_QUERY = mysqli_query($DATABASE1, $sql);
$DATABASE2_QUERY = mysqli_query($DATABASE2, $sql);
$DATABASE1_RESULT = mysqli_fetch_assoc($DATABASE1_QUERY);
$DATABASE2_RESULT = mysqli_fetch_assoc($DATABASE2_QUERY);
/* SHOW YOUR RESULT HERE WHICH DATABASE YOU WANT FROM */
echo $DATABASE1_RESULT['id'];
echo $DATABASE2_RESULT['id'];
/*After complete your all work don't forgot about close database connections*/
mysqli_close($DATABASE1);
mysqli_close($DATABASE2);
?>
回答by Sachin Sanchaniya
First Connect Two Database
先连接两个数据库
$database1 = mysql_connect("localhost","root","password");
$database2 = mysql_connect("localhost","root","password");
Now Select The Database
现在选择数据库
$database1_select = mysql_select_db("db_name_1") or die("Can't Connect To Database",$database1);
$database_select = mysql_select_db("db_name_2") or die("Can't Connect To Database",$database2);
Now if we want to run query then specify database Name at the end like,
现在,如果我们要运行查询,请在末尾指定数据库名称,例如,
$select = mysql_query("SELECT * FROM table_name",$database1);

