Когда у меня есть такая ситуация:
$databaseA = new mysqli($host,$user,$pass,"databaseA"); $databaseB = new mysqli($host,$user,$pass,"databaseB");
Когда я определяю $databaseB
, пытается ли mysqli повторно открыть соединение с $host
или использует кешированное соединение из $databaseA
?
благодаря
Предполагая, что у вас есть веская причина использовать две разные базы данных, единственный способ сделать эту работу одним подключением – с пользователем, имеющим привилегии для доступа к обеим базам данных. Было бы так:
$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). Таким образом, запрос, который получает один столбец из базы данныхB и два из базы данныхA, будет выглядеть так:
$query = "SELECT databaseB.table.column, table.column, table.column2";
Для каждого объекта mysqli будет отдельное соединение.
Попробуйте
SHOW FULL PROCESSLIST;
на вашем сервере MySQL во время выполнения вы увидите два разных процесса, связанных с одним и тем же хостом, если ваш пример реализован.