Соединение таблиц из разных баз данных - PullRequest
0 голосов
/ 04 февраля 2011

Я пытаюсь получить данные из двух таблиц в двух разных базах данных на одном сервере. Я использую этот код

<?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

Ответы [ 2 ]

3 голосов
/ 04 февраля 2011

В действительности нетрудно объединить отдельные базы данных (при условии, что они находятся на одном сервере). Так же, как вы указали бы поля с помощью «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 голос
/ 04 февраля 2011

Вы открыли два подключения к базе данных, но не указали PHP, какое из них использовать для запроса.В этом случае предполагается последняя открытая ссылка.Передайте ресурс соединения явно mysql_query().

$rs=mysql_query($sql, $db);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...