php - sencillo - cuantas consultas por segundo soporta mysql
Cómo conectarse a 2 bases de datos al mismo tiempo en PHP (7)
Lucas está en lo correcto. Supongo que ambas bases de datos están alojadas en el mismo host.
Alternativamente, puede crear solo 1 conexión de db y seguir intercambiando las bases de datos según sea necesario. Aquí hay un pseudo código.
$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 --
Estoy tratando de conectarme a 2 bases de datos en la misma instancia de MySQL desde 1 script PHP.
Por el momento, la única forma que he descubierto es conectarme a ambas bases de datos con un usuario diferente para cada una.
Estoy usando esto en una secuencia de comandos de migración en la que estoy tomando datos de la base de datos original e insertándolos en la nueva, así que estoy recorriendo grandes listas de resultados.
Conectarse a 1 base de datos y luego tratar de iniciar una segunda conexión con el mismo usuario simplemente cambia la base de datos actual a la nueva.
¿Alguna otra idea?
Primero conecta dos bases de datos
$database1 = mysql_connect("localhost","root","password");
$database2 = mysql_connect("localhost","root","password");
Ahora seleccione la base de datos
$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);
Ahora, si queremos ejecutar la consulta, especifique el nombre de la base de datos al final, como
$select = mysql_query("SELECT * FROM table_name",$database1);
Puede usar fácilmente 2 bases de datos al mismo tiempo con los siguientes códigos:
<?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);
?>
Si es una opción, use PDO: puede tener abiertas tantas conexiones de base de datos como desee.
Además, suponiendo que ejecuta las mismas consultas una y otra vez, puede usar declaraciones preparadas.
Si su usuario de base de datos tiene acceso a ambas bases de datos y están en el mismo servidor, puede usar una conexión y simplemente especificar la base de datos con la que desea trabajar antes del nombre de la tabla. Ejemplo:
SELECT column
FROM database.table
Según lo que necesite hacer, es posible que pueda hacer un INSERT INTO
y ahorrar un montón de tiempo de procesamiento.
INSERT INTO database1.table (column)
SELECT database2.table.column
FROM database2.table
Tendrá que pasar un valor booleano verdadero como el cuarto argumento opcional a mysql_connect (). Consulte la documentación de mysql_connect () de PHP para obtener más información.
Yo sugeriría usar dos controladores de conexión
$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