2011-02-04 65 views
0

我想從同一臺服務器的兩個不同數據庫中的兩張表中提取數據。 我使用此代碼加入來自不同數據庫的表格

<?php 

    $host='localhost'; 
    $root='root'; 
    $password='mypass'; 
    $db=mysql_connect($host,$root,$password) or die('unable to connect database'); 
    $dbname='BUSMSTR_10'; 
    mysql_select_db($dbname,$db) or die(mysql_error($db)); 

    $db2=mysql_connect($host,$root,$password) or die('unable to connect database'); 
    $dbname='BULIB_Info'; 
    mysql_select_db($dbname,$db2) or die(mysql_error($db2)); 

    $sql="SELECT 
     m_Student.Stud_Name_Form AS Stud_Name_Form, 
     m_Student.Enrl_no AS Enrl_no, 
     m_Subject.Sub_name AS Sub_name 
    FROM 
     BUSMSTR_05.m_Student m_Student 
    INNER JOIN 
     BULIB_Info.m_Subject m_Subject 
    ON 
     m_Student.Sub_ID=m_Subject.Sub_ID 

    LIMIT 10"; 

$rs=mysql_query($sql); 

    while($row=mysql_fetch_assoc($rs)){ 
     echo $row['Stud_Name_Form']."|||||".$row['Enrl_no']."|||||".$row['Sub_name']."<BR>"; 
     } 

?>

但我得到的錯誤。 最新情況是怎麼回事.... 以及如何解決這個問題?

錯誤味精----

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/budcc/html/student/PHP/Student.php on line 25 
+3

誰知道?你甚至沒有告訴我們你得到的錯誤是什麼! – 2011-02-04 12:29:43

+0

如果數據庫位於同一臺服務器上並且您擁有正確的憑據和權限,則不需要進行2次連接,只需使用第一個連接 – anothershrubery 2011-02-04 12:43:08

回答

3

這真的不是很難加入單獨的數據庫(假設它們駐留在同一臺服務器上),就像你會指定使用「table.field」字段,可以還可以使用「database.table.field」下面是兩個數據庫的例子加盟:

$sql="SELECT db1.table1.somefield, db2.table1.somefield FROM db1.table1 INNER JOIN db2.table1 ON db1.table1.someid = db2.table1.someid WHERE db1.table1.somefield = 'queryCrit';" 

您只需編寫您查詢,就像你,如果你中一個數據塊進行工作,只需用點符號來指定你的數據庫也是如此。

至於你的問題就我不認爲你是之前的表名添加數據庫名無處不。嘗試這一點。

1

您打開了兩個數據庫連接,但沒有告訴PHP哪一個用於查詢。在這種情況下,假設最後一個鏈接打開。明確地將連接資源傳遞給mysql_query()

$rs=mysql_query($sql, $db); 
相關問題