2014-09-01 23 views
0

如何在Kohana的不同數據庫中連接表?在Kohana中選擇2個數據庫PHP

$tb_new = 'db_zaboo_feed.feed_' . $feed; 
      $ids = DB::query(Database::SELECT, 
          "SELECT d.fuid_id, d.user_id FROM db_zaboo.displays d 
          LEFT JOIN $tb_new f ON(d.fuid_id = f.uid) 
          WHERE d.user_id = (SELECT user_id FROM $tb_new GROUP BY user_id) AND f.uid IS NULL")->execute(); 

ERROR:

Database_Exception [ 1146 ]: Table 'db_zaboo.displays' doesn't exist [ SELECT d.fuid_id, d.user_id FROM db_zaboo.displays d LEFT JOIN db_zaboo_feed.feed_3 f ON(d.fuid_id = f.uid) WHERE d.user_id = (SELECT user_id FROM db_zaboo_feed.feed_3 GROUP BY user_id) AND f.uid IS NULL ] 
+0

不是一個Kohana用戶,但這應該是不可能的。查詢在連接到特定數據庫時被調用。你需要有兩個連接運行,然後自己執行兩個獨立的查詢和邏輯 – user3791372 2014-09-01 21:33:39

+0

From來指定數據庫,所以:「 - > execute($ this - > _ db_group);」 但不知道如何到兩個數據庫 – user3092202 2014-09-01 21:40:32

回答

0

這不是一個Kohana的具體問題。這是一個MySQL問題。

要在同一查詢中的多個數據庫上進行操作,必須使用帶有其數據庫名稱的表名稱。如:

SELECT * FROM database1.table1 WHERE database1.table1.id IN (SELECT table1_id FROM database2.table2) 

注意:按字面上寫你的查詢,我不知道如果Kohana中的查詢構建器可以防止SQL注入攻擊,因爲它會通過查詢生成器的特定功能構建SQL查詢做。我會阻止它使用函數mysql_real_escape_string