Я новичок в PDO. Я хотел бы знать, есть ли что-то похожее на mysql_select_db в PDO, так что я могу переключаться между различными базами данных во время выполнения без необходимости создания нового объекта.
Переключение между несколькими базами данных в PDO
Ответ 1
Нет, вам нужно будет создать два объекта PDO для отдельных соединений, если вы хотите использовать их во время выполнения.
Изменить: Интересный пункт by @laz ниже (который, как я предполагаю, является причиной отрицательных голосов в моем ответе). Я думал, исходя из предположения, что базы данных находятся на отдельных серверах tbh, и в этом случае мой ответ стоит.
Ответ 2
Я знаю, что я на пару месяцев опоздал, но вы должны иметь возможность переключаться между базами данных из вашего запроса.
примеры:
$sql = "SELECT * FROM dbname.tablename";
$sql = "SELECT * FROM anotherdbname.anothertablename"
Итак, даже если ваш исходный объект $pdo использовался как "бла-бла" в качестве имени db, вы все равно должны быть в порядке на основе выбранных мной примеров.
Ответ 3
Похоже, что PDO не имеет переключения базы данных, потому что не каждый движок базы данных поддерживает его.
AFAIK PostgreSQL не имеет переключения базы данных, но предлагает схемы, и вы можете переключаться между ними.
Однако, если вы используете mysql, проверьте, работает ли это для вас:
$pdo = new PDO('mysql:dbname=db1;host=127.0.0.1','user','pass');
$sql = 'select count(*) from table_name';
$res = $pdo->query($sql);
print_r($res->fetchAll());
$pdo->exec('USE db2');
$res = $pdo->query($sql);
print_r($res->fetchAll());
Ответ 4
Вам вообще не нужно указывать базу данных при подключении вообще. Пока вы указываете базу данных в каждом запросе, как сказал Лаз, это будет работать:
$dbh = new PDO('mysql:host=127.0.0.1','USER','PASS');
$query = "SELECT * FROM database1.table1";
$query = "SELECT * FROM database2.table1";
Ответ 5
вам даже не нужно указывать базу данных в каждом запросе, просто используйте синтаксис msyql
USE db_name
а затем напишите ваши запросы