Conectar múltiples bases de datos y unir consultas en bases de datos en php

Usando php, quiero hacer una consulta de unión en 2 bases de datos.

Esta es mi primera conexión.

$conn = mysql_connect('localhost','root1','pass1'); @mysql_select_db('database1',$conn); 

Esta es mi segunda conexión.

 $conn1 = mysql_connect('localhost','root2','pass2'); @mysql_select_db('database2',$conn1); 

Si quiero obtener los datos de la base de datos1, estoy haciendo lo siguiente.

 $sql = 'SELECT * FROM users'; $result = mysql_query($sql, $conn); print_r(mysql_fetch_array($result)); 

Del mismo modo para la segunda base de datos2

 $sql = 'SELECT * FROM orders'; $result = mysql_query($sql, $conn1); print_r(mysql_fetch_array($result)); 

Pero estoy enfrentando un problema cuando estoy haciendo una consulta de combinación de la siguiente manera

 $sql = 'SELECT a.fname AS fname, a.lname AS lname FROM database1.users a JOIN database2.orders b ON b.creator_id = a.id'; $result = mysql_query($sql);//what should be second parameter over here. print_r(mysql_fetch_array($result)); 

Puede hacer esto precediendo el nombre de la tabla también con el nombre de la base de datos, como propuso en el ejemplo. Pero el usuario conectado debe tener acceso a ambas bases de datos con las mismas credenciales. Esta última parte es muy importante, de lo contrario no podrás hacerlo.

Esto le da un ejemplo fácil pero directo: enlace

Ejemplo tomado de ese enlace (solo funcionará con las mismas credenciales):

 SELECT c.customer_name, o.order_date FROM db1.tbl_customers c LEFT JOIN db2.tbl_orders o ON o.customer_id = c.id 

El módulo mysql en el entorno php no admite múltiples conexiones de bases de datos, y, además, este módulo existe solo por razones de retrocompatibilidad. No deberías usarlo.

mysqli y PDO son mejores, más completos (estos soportan la transacción y la statement preparada, “mysql” no), y PDO también admite la consulta multi-db.

El antiguo mysql es solo de procedimiento, mysqli puede usarse en progtwigción procedural y OO, PDO es OOP.