2011-02-04 64 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); 
相关问题