Ответ 1
Вам нужно передать логическое значение true в качестве необязательного четвертого аргумента в mysql_connect(). Для получения дополнительной информации см. PHP mysql_connect().
Я пытаюсь подключиться к 2 базам данных в одном экземпляре MySQL с 1 PHP script.
В настоящий момент единственным способом, который я выяснил, является подключение к каждой базе данных с другим пользователем для каждого.
Я использую это в миграции script, где я захватываю данные из исходной базы данных и вставляю их в новую, поэтому я просматриваю большие списки результатов.
Подключение к 1 базе данных, а затем попытка инициировать второе соединение с одним и тем же пользователем, просто изменяет текущую базу данных на новую.
Любые другие идеи?
Вам нужно передать логическое значение true в качестве необязательного четвертого аргумента в mysql_connect(). Для получения дополнительной информации см. PHP 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);