2011-02-04 8 views
0

同じサーバー内の2つの異なるデータベースにある2つのテーブルからデータをフェッチしようとしています。 私はこのコード?>異なるデータベースのテーブルに結合する

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

を使用しています。しかし、私はエラーを取得しています。 どうしたらいいですか.... と私はこれをどのように修正しますか?

エラーMSG ----

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

誰が知っていますか?あなたは、あなたが得ているエラーが何であるか教えてくれませんでした! –

+0

データベースが同じサーバーにあり、正しい資格とアクセス許可を持っている場合は、2つの接続を作成する必要はありません。最初の接続を使用してください。 – anothershrubery

+0

Errormessageを投稿できますか? – pmuens

答えて

3

それはあなたができる、あなたが「table.field」を使用してフィールドを指定するのと同じように別々のデータベース(同じサーバー上に存在すると仮定)に参加するためには本当に難しいことではありませんあなたは1デシベルで働いていた場合には、ちょうど指定するには、ドット表記を使用

$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';" 

あなたは単にあなたがちょうどあなたのよう照会書きます。また、参加2つのデータベースの一例である以下の「database.table.field」を使用あなたのデータベースも。

あなたの問題が解決しない限り、私はあなたがのテーブル名の前にデータベース名を追加すると思いません。。それを試してください。

+0

データベース名を追加してみましたが、問題は同じです –

+0

このエラーは、おそらくクエリによって選択された行がないことを示唆しています。 $ sqlのエコーを試してから、この正確なクエリをmysql(phpmyadmin)で手動で実行してください。 See ifはすべての行を返します。 – ayush

1

2つのデータベース接続を開きましたが、クエリにどのデータベースを使用するかPHPに指示しませんでした。この場合、最後に開いたリンクが想定されます。接続リソースを明示的にmysql_query()に渡します。

$rs=mysql_query($sql, $db); 
関連する問題