Bạn có thể thực hiện nhiều cuộc gọi đến mysql_connect()
, nhưng nếu các thông số giống nhau, bạn cần chuyển đúng cho tham số '$new_link
' (thứ tư), nếu không kết nối đó sẽ đượ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 thứ hai:
mysql_query('select * from tablename', $dbh2);
Nếu bạn không vượt qua một liên kết số nhận dạng sau đó kết nối cuối cùng được tạo được sử dụng (trong trường hợp này, số được đại diện bởi $dbh2
) ví dụ:
mysql_query('select * from tablename');
Các tùy 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à họ đang ở trên cùng một máy chủ (ví dụ: cả hai DB đều có thể truy cập 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 chắn đây là một giải pháp sạch sẽ và bạn có thể kết thúc 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 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.
Cũng 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.
Nguồn
2008-11-08 16:42:13
rằng "true" vừa tiết kiệm cho tôi số giờ làm việc – PurplePilot
+1 Giải pháp này làm việc cho tôi. Sau hai ngày gỡ lỗi vì sao các mẫu WordPress tùy chỉnh của tôi mất quyền truy cập đối tượng $ WP_Query sau khi gọi đến kết nối cơ sở dữ liệu thứ hai ... –
có thể đặt một trong số chúng thành mặc định và chỉ cần thêm ' $ dbh2' cho cái thứ hai chỉ khi cần? Phải thay đổi tất cả các truy vấn cho cách tiếp cận này để làm việc có thể mất vài ngày để tìm tất cả chúng ... – ThomasK