Mysqli - 当用mysql打开2个连接到同一主机但是不同的数据库时,mysqli会打开一次连接吗?

时间:2015-01-03 19:33:03

标签: php mysqli

当我遇到这样的情况时:

$databaseA = new mysqli($host,$user,$pass,"databaseA");
$databaseB = new mysqli($host,$user,$pass,"databaseB");

当我定义$databaseB时,mysqli会尝试重新打开与$host的连接,还是使用$databaseA中的缓存连接?
感谢

2 个答案:

答案 0 :(得分:11)

假设您有充分的理由使用两个不同的数据库,使用单个连接实现此工作的唯一方法是具有访问这两个数据库的权限的用户。它会是这样的:

$db = new mysqli($host,$user,$pass); // connect to the MySQL server without specifying a database

mysqli_select_db('databaseA', $db); // Specify your default/most-used database

如果您未在查询中明确指定databaseB,MySQL将使用默认值(databaseA)。因此,从databaseB获取一列而从databaseA获取两列的查询将如下所示:

$query = "SELECT databaseB.table.column, table.column, table.column2";

答案 1 :(得分:3)

对于每个mysqli对象,都会有一个单独的连接。

尝试

SHOW FULL PROCESSLIST; 
在运行时的MySQL服务器上

,如果您的示例已实现,您将看到从同一主机连接的两个不同进程。