Cảnh báo: các mysql_xx
hàm bị phản đối kể từ php 5.5 và bị xóa kể từ php 7.0 (xem http://php.net/manual/intro.mysql.php ), sử dụng các mysqli_xx
hàm hoặc xem câu trả lời bên dưới từ @Troelskn
Bạn có thể thực hiện nhiều cuộc gọi đến mysql_connect()
, nhưng nếu các tham số giống nhau, bạn cần chuyển đúng cho tham số ' $new_link
' (thứ tư), nếu không thì cùng một kết nối được sử dụng lại. Ví dụ:
$dbh1 = mysql_connect($hostname, $username, $password);
$dbh2 = mysql_connect($hostname, $username, $password, true);
mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);
Sau đó, để truy vấn cơ sở dữ liệu 1 vượt qua định danh liên kết đầu tiên:
mysql_query('select * from tablename', $dbh1);
và cho cơ sở dữ liệu 2 vượt qua lần thứ hai:
mysql_query('select * from tablename', $dbh2);
Nếu bạn không vượt qua một định danh liên kết thì kết nối cuối cùng được tạo sẽ được sử dụng (trong trường hợp này là kết nối được đại diện bởi $dbh2
), vd:
mysql_query('select * from tablename');
Sự lựa chọn khác
Nếu người dùng MySQL có quyền truy cập vào cả hai cơ sở dữ liệu và chúng nằm trên cùng một máy chủ (tức là cả hai DB đều có thể truy cập được từ cùng một kết nối), bạn có thể:
- Giữ một kết nối mở và gọi
mysql_select_db()
để trao đổi giữa khi cần thiết. Tôi không chắc đây là một giải pháp sạch và cuối cùng bạn có thể truy vấn cơ sở dữ liệu sai.
- Chỉ định tên cơ sở dữ liệu khi bạn tham chiếu các bảng trong các truy vấn của mình (ví dụ
SELECT * FROM database2.tablename
). Đây có thể là một nỗi đau để thực hiện.
Ngoài ra, vui lòng đọc câu trả lời của troelskn vì đó là cách tiếp cận tốt hơn nếu bạn có thể sử dụng PDO thay vì các tiện ích mở rộng cũ hơn.