Tôi đang viết một lớp bao bọc cho trang 7 của tôi cho phép tôi kết nối và truy vấn cơ sở dữ liệu phpbb của mình.Nhiều kết nối cơ sở dữ liệu đồng thời trong drupal 7
Khi kết nối với nguồn dữ liệu ngoài (theo tài liệu drupal) bạn đã đặt db hoạt động, chạy truy vấn, sau đó đặt db hoạt động trở lại mặc định.
ví dụ:
db_set_active('phpbb');
$result = db_query($sql,$args,$opts);
db_set_active();//back to default
Nhưng có cách nào để sử dụng cơ sở dữ liệu wrapper drupal để tạo ra một kết nối hoàn toàn mới mà có thể được đặt vĩnh viễn thành cơ sở dữ liệu mới mà không cần phải làm chuyển đổi này back-và-ra vô nghĩa? chắc chắn chúng ta có thể xử lý các kết nối tới nhiều cơ sở dữ liệu đồng thời.
Tôi đã thực hiện một số googling nhưng không tìm thấy bất kỳ ai đang cố gắng làm điều này như được nêu ra.
http://drupal.org/node/18429 cũng có một số ví dụ mã, đặc biệt nếu bạn muốn định cấu hình cài đặt cơ sở dữ liệu động, nghĩa là, không được mã hóa cứng trong settings.php. Ví dụ, nếu bạn lưu trữ các thiết lập cơ sở dữ liệu ở một nơi nào đó khác với trong settings.php, bạn có thể tự động tạo mảng và sử dụng Database :: addConnectionInfo() để tạo kết nối cơ sở dữ liệu. – sillygwailo
'$ phpbb = Cơ sở dữ liệu :: getConnection ($ target = 'default', key = 'phpbb');' đây là một lỗi mà tôi thấy theo thời gian và tôi đang thua lỗ như thế nào mọi người có thể đến một mã như vậy . Những gì bạn muốn là '$ phpbb = Database :: getConnection ('mặc định', 'phpbb');' lý do duy nhất mà mã của bạn làm việc là biểu thức '$ target = 'default'' đánh giá là' default', tuy nhiên biến đó ' $ target' trong phạm vi * người gọi * thay đổi thành ''default'' có thể không được ghi nhận. – chx
@chx Đồng ý - Trả lời cập nhật :) – thtas