Как подключиться к 2 базам данных одновременно в PHP

Я пытаюсь подключиться к 2 базам данных на одном экземпляре MySQL из 1 PHP-скрипта.

В настоящий момент единственным способом, который я выяснил, является подключение к обеим базам данных с другим пользователем для каждого.

Я использую это в сценарии миграции, где я беру данные из исходной базы данных и вставляю их в новую, поэтому я просматриваю большие списки результатов.

Подключение к 1 базе данных, а затем попытка инициировать второе соединение с одним и тем же пользователем, просто изменяет текущую базу данных на новую.

Любые другие идеи?

Вам нужно передать логическое значение true в качестве необязательного четвертого аргумента в mysql_connect (). Дополнительную информацию см. В документации по MySQL mysql_connect () .

Если пользователь базы данных имеет доступ к обеим базам данных, и они находятся на одном сервере, вы можете использовать одно соединение и просто указать базу данных, с которой хотите работать, перед именем таблицы. Пример:

SELECT column FROM database.table 

В зависимости от того, что вам нужно сделать, вы можете сделать INSERT INTO и сохранить кучу времени обработки.

 INSERT INTO database1.table (column) SELECT database2.table.column FROM database2.table 

Лукас прав. Я предполагаю, что обе базы данных размещены на одном хосте.

В качестве альтернативы вы можете создать только соединение 1 дБ и по необходимости поменять местами базы данных. Вот псевдокод.

 $db_conn = connect_db(host, user, pwd); mysql_select_db('existing_db', $db_conn); -- do selects and scrub data -- mysql_select_db('new_db', $db_conn); -- insert the required data -- 

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

Кроме того, если вы снова и снова выполняете одни и те же запросы, вы можете использовать подготовленные операторы.

Я бы предложил использовать два обработчика соединения

  $old = mysql_connect('old.database.com', 'user', 'pass); mysql_select_db('old_db', $old); $new = mysql_connect('new.database.com','user','pass); mysql_select_db('new_db', $new) // run select query on $old // run matching insert query on $new 

Вы можете легко использовать 2 базы данных в одно и то же время со следующими кодами:

 <?php define('HOST', "YOURHOSTNAME"); define('USER', "YOURHOSTNAME"); define('PASS', "YOURHOSTNAME"); define('DATABASE1', "NAMEOFDATABASE1"); define('DATABASE2', "NAMEOFDATABASE2"); $DATABASE1 = mysqli_connect(HOST, USER, PASS, DATABASE1); $DATABASE2 = mysqli_connect(HOST, USER, PASS, DATABASE2); if(!$DATABASE1){ die("DATABASE1 CONNECTION ERROR: ".mysqli_connect_error()); } if(!$DATABASE2){ die("DATABASE2 CONNECTION ERROR: ".mysqli_connect_error()); } $sql = "SELECT * FROM TABLE"; /* You can use your own query */ $DATABASE1_QUERY = mysqli_query($DATABASE1, $sql); $DATABASE2_QUERY = mysqli_query($DATABASE2, $sql); $DATABASE1_RESULT = mysqli_fetch_assoc($DATABASE1_QUERY); $DATABASE2_RESULT = mysqli_fetch_assoc($DATABASE2_QUERY); /* SHOW YOUR RESULT HERE WHICH DATABASE YOU WANT FROM */ echo $DATABASE1_RESULT['id']; echo $DATABASE2_RESULT['id']; /*After complete your all work don't forgot about close database connections*/ mysqli_close($DATABASE1); mysqli_close($DATABASE2); ?> 

Сначала подключить две базы данных

 $database1 = mysql_connect("localhost","root","password"); $database2 = mysql_connect("localhost","root","password"); 

Теперь выберите базу данных

 $database1_select = mysql_select_db("db_name_1") or die("Can't Connect To Database",$database1); $database_select = mysql_select_db("db_name_2") or die("Can't Connect To Database",$database2); 

Теперь, если мы хотим запустить запрос, тогда укажите имя базы данных в конце, например,

 $select = mysql_query("SELECT * FROM table_name",$database1);