2014-10-08 15 views
0

我試圖搜索和過濾兩個不同的數據庫。mysqli PHP搜索和過濾MySQL中的兩個數據庫/表格

DATABASE1.table1 | DATABASE2.table1 
id | col2   | id | ref_col2 | ref_col3 
1 | 2   | 1 | thing | thing 
2 | 500   | 2 | other | other 

我知道你可以使用,如果按照其在同一個數據庫:

$search = explode(" ", mysqli_real_escape_string($connection, $_POST["search_string"])); 
$search_string = " AND ("; 
for($i=0;$i<count($search);$i++){ 
    $search_string .= "(t2.ref_col2 LIKE '%".$search[$i]."%' OR t2.ref_col3 LIKE '%".$search[$i]."%') AND ";} 
$search_string = substr($search_string,0,strlen($search_string)-4); 
$search_string .= ")"; 


$query = mysqli_query($connection, "SELECT t1.*, t2.* AS row_count FROM table1 AS t1 LEFT JOIN table2 AS t2 ON t1.id = t2.id WHERE t1.id>0".$search_string)or die(); 

我的問題是:如果他們是在兩個不同的數據庫?有沒有一種特定的方式來選擇一個database.table結果通過搜索另一個database.table的列表上面?

回答

0

,如果他們是在同一臺服務器上,然後

database1.table1 AS t1 LEFT JOIN database2.table2 AS t2 

應該罰款

+0

但推出mysqli_connect時(主機,用戶名,密碼,** ** DB)......難道不只能連接到單個數據庫? – 2014-10-08 15:41:28

+0

好,如果你連接到一個數據庫使用它的名字,那麼你可以省略點語法...所以,如果你'連接'到database1那麼你可以做... .... table1作爲t1左加入database2.table2作爲t2 ...或者只是爲了避免混淆而在前面加上數據庫名稱的所有表格 – myte 2014-10-08 15:43:48

+0

因此,在發佈此問題之前我無法得到此工作,並且我認爲這是在查看錯誤之後使用數據庫。 。 $ query = mysqli_query($ connection,「SELECT COUNT(** t1。***)AS row_count FROM db1.table1 AS t1 LEFT JOIN db2.table2 AS t2 ON t1.id = t2.id WHERE t1.id> 0「。$ search_string)或die(); 當你不能使用t。*時,你只能使用*而不參考哪個數據庫:S感謝你的幫助!選中標記爲答案! – 2014-10-08 17:47:46