2013-04-04 50 views
-1

我想連接到兩個數據庫來創建一個我的幾個數據庫的搜索引擎。這裏有一個測試代碼。有人能告訴我我做錯了什麼或者是否有可能。謝謝。我怎樣才能連接到兩個數據庫

mysql_connect("localhost","user","pass"); 
mysql_select_db("db1"); 
mysql_select_db("db2"); 

$search=mysql_query("SELECT * from db1.repairs, db2.order from db1,db2"); 
while($row=mysql_fetch_array($search)){ 
    echo $row['first_name']."&nbsp;".$row['esn']."&nbsp;".$row['order_type']."<br>"; 
} 
+1

如果您的問題已解決,請接受其中一個答案,並提出所有有用的答案(包括接受的答案)。如果您需要任何額外的說明,請隨時對答案發表評論。 – jcbwlkr 2013-04-05 13:59:09

回答

0

mysql_connect返回$resource。您可以連接兩次並選擇每個數據庫(實際上,您可以從連接本身選擇一個數據庫),然後使用每個連接。

但是,您的問題是您的SELECT不正確。您正試圖從數據庫中的表中選擇字段,這是不正確的。事實上,你不能以如此奇特的方式獲取兩個不同的數據庫,因爲它們被認爲是兩組獨立的信息,並且彼此之間無關。這就是表格存在的原因,以適應這個問題。

This other但是,答案可能有解決方案。

否則,您可以使用兩個mysql_connect和兩個資源連接到每個數據庫,獲取值並自行交叉。我知道這不是最好的選擇,但是可以滿足您的需求。 PS:如果您現在正在開始項目,請切換到Mysqli或PDO。 Mysql已棄用。

1

可跨數據庫查詢,如果你的表名前指定這樣

SELECT  a.col1, b.col2 
FROM  db1.table1 AS a 
INNER JOIN db2.table2 AS b ON a.someIdFromA = b.someIdFromB 

數據庫名稱作爲Korcholis提到的問題是你的選擇。如果你能避免它,你也不想使用mysql_*函數。 PDO或MySqli是首選。

編輯 至少這個工程使用MySQL。我敢打賭,它也適用於大多數其他RDBMS,但我沒有其他人可以方便地測試,我不能說這是否符合SQL標準。評論任何人?

+0

我喜歡這個,但我沒有測試它,也許我不是很樂意,因爲這不是正確的方法.. – 5ervant 2013-04-30 05:28:07

0

嘗試查看此這些連接類嘗試,也許你不能查詢FROM查詢數據庫:

<?php 
$con1 = mysqli_connect("$hostname", "$user1", "$password1", "$db1"); 
if (mysqli_connect_errno($con1)) { 
    echo mysqli_connect_error(); 
} 

$con2 = mysqli_connect("$hostname", "$user2", "$password2", "$db2"); 
if (mysqli_connect_errno($con2)) { 
    echo mysqli_connect_error(); 
} 

$search1 = mysqli_query($con1, "SELECT * from $db1table"); 

$search2 = mysqli_query($con2, "SELECT * from $db2table"); 

/* Other PHP codes here */ 

mysqli_close($con1); 
mysqli_close($con2); 
?> 

你甚至可以改進這個代碼,也不會最小化它!

相關問題