Я пытаюсь извлечь данные из двух таблиц в две разные базы данных на одном сервере. Я использую этот код
<?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
Совсем нетрудно присоединиться к отдельным базам данных (при условии, что они находятся на одном сервере). Подобно тому, как вы укажете поля, используя «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';"
Вы просто пишете запрос так же, как и если бы вы работали в одном db, просто используйте точечную нотацию, чтобы указать ваши базы данных.
Что касается вашей проблемы, я не думаю, что вы добавляете имена баз данных перед именами таблиц во всем мире. Пробуйте это.
Вы открыли два подключения к базе данных, но не сказали PHP, какой из них использовать для запроса. В этом случае предполагается открытие последней ссылки. Передайте ресурс соединения в mysql_query()
явно.
$rs=mysql_query($sql, $db);