Подтвердить что ты не робот

Переключение между несколькими базами данных в PDO

Я новичок в PDO. Я хотел бы знать, есть ли что-то похожее на mysql_select_db в PDO, так что я могу переключаться между различными базами данных во время выполнения без необходимости создания нового объекта.

4b9b3361

Ответ 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

а затем напишите ваши запросы