2015-09-14 3 views
0

Я планирую сделать «учебный режим» в своей системе. Когда он будет активирован, соединение с базой данных системы получит таблицу users из базы данных 1, но таблицы customers и products из базы данных 2.«Режим обучения» с использованием PDO и MySQL

Какой был бы лучший способ сделать это? У меня есть соединение с базой данных (с использованием PDO).

$pdo = new PDO(DB_TYPE.':host='.DB_HOST.'; dbname='.DB_NAME, DB_USER, DB_PASS); 

система ищет состояние режима обучения с users и если это так, то следует подключить другую базу данных объединения customers и products. Могу ли я получить некоторые таблицы из одной базы данных и некоторых других?

ответ

0

Да, конечно, вы можете, все, что вам нужно сделать, это создать другое соединение PDO с другой базой данных.

// original connection 
$pdo = new PDO(DB_TYPE.':host='.DB_HOST.'; dbname='.DB_NAME, 
       DB_USER, DB_PASS); 

// test mode connection 
$pdo_test = new PDO(DB_TYPE.':host='.DB_HOST.'; dbname='.DB_NAME_TEST, 
       DB_USER_TEST, DB_PASS_TEST); 

Тогда его просто f.l.o.c, чтобы убедиться, что вы используете правильный объект соединения в зависимости от того, запрос вы исполнение.

0

Одним из способов было бы просто использовать абсолютные ссылки на таблицы, например. dbname.tablename.fieldname:

$source = 'training'; 
$sql = "SELECT foo FROM $source.table"; 

Просто установите $source где-то центральный и использовать его во всех ваших запросов.

Кроме того, вы МОЖЕТЕ установить два полностью отдельных dbs с идентичными структурами таблиц и просто подключиться к соответствующему. Это означало бы соединение ДВАЖДЫ. один раз, чтобы получить данные пользователя и выяснить, где подключиться, а затем на самом деле сделать это соединение.

Вам не пришлось бы переписывать все ваши запросы в абсолютную форму, но теперь вам нужно поддерживать два полностью отдельных dbs и набора данных.

+0

@yourcommonsense: спасибо за редактирование. –