从不同的数据库连接表

时间:2011-02-04 12:28:26

标签: php sql mysql database

我正在尝试从同一服务器中两个不同数据库中的两个表中获取数据。 我正在使用此代码

<?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>";
        }

&GT;

但我收到了错误。 它出什么问题了.... 我将如何解决这个问题?

错误消息----

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

您打开了两个数据库连接,但没有告诉PHP使用哪个查询。在这种情况下,假定打开最后一个链接。将连接资源明确传递给mysql_query()

$rs=mysql_query($sql, $db);