当我遇到这样的情况时:
$databaseA = new mysqli($host,$user,$pass,"databaseA");
$databaseB = new mysqli($host,$user,$pass,"databaseB");
当我定义$databaseB
时,mysqli会尝试重新打开与$host
的连接,还是使用$databaseA
中的缓存连接?
感谢
答案 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服务器上,如果您的示例已实现,您将看到从同一主机连接的两个不同进程。