Intereting Posts
PHP Взрыв из первого числа (целое число) WordPress: назначение виджетов отдельным страницам Регулярное выражение Htaccess для соответствия любому символу Я хочу, чтобы мой поиск показывал только результаты с соответствующими значениями полей. Как это делается? Один запрос для вставки нескольких строк с несколькими столбцами Числовой порядок при возврате результатов из MySQL Разбор большого файла JSON Как заменить все теги ul и li на div с помощью PHP Simple HTML DOM Parser? Как установить доступ по умолчанию для доступа к типу страницы в Silverstripe? Контролируйте количество результатов вызова API Magento C #: кодировка Base64 php показать все изображения в каталоге и отсортировать по последнему измененному Миграция Laravel: уникальный ключ слишком длинный, даже если указан Как проверить, была ли получена почта с помощью php проблема с несколькими curl и simplehtmldom, захват только заголовка?

Таблица PHP-Mysql объединяется с разных хостов

В базе данных abc_db есть сотрудник таблицы в abc @ localhost (server), а в базе данных xyz_db есть другой столбец в xyz @ localhost (server). Как я могу присоединиться к таблицам, используя php mysql-соединение. Я написал следующий код, но он не генерирует идентификатор ресурса.

$conn = mysql_connect("localhost","abc","abcdb"); $conn1 = mysql_connect("localhost","xyz","xyzdb"); $db_select=mysql_select_db("abc_db",$conn); $db_select1=mysql_select_db("xyz_db",$conn1); $sql="SELECT * FROM employee e LEFT JOIN department d ON e.department_id=d.id "; $res=mysql_query($sql); 

Вы не можете присоединиться к двум таблицам, используя разные соединения с базой данных, а не с PHP, ни на сервере MySQL. ( @RobertPitt имеет хорошую точку: вам действительно нужны два соединения? Возможно объединение двух таблиц на одном и том же хосте, но в разных базах данных, в одном соединении – при условии, что ваше соединение имеет необходимые привилегии для доступа к ним)

Если у вас есть контроль над той или иной базой данных, вы можете попробовать создать объединенную таблицу; убедитесь, что производительность в порядке, хотя (если устройства db не имеют быстрого соединения с низкой задержкой (т.е. напрямую соединены кабелем), не беспокойтесь), и существует длинный список ограничений .

Возможное меньшее зло:

  • скопируйте таблицу с одного сервера на другой (сложно настроить)
  • «присоединяйте» их вручную в PHP (грубый, неэффективный, но в значительной степени ваш единственный выбор, если у вас нет контроля над базой данных)

Вы можете сделать выбор между различными базами данных и таблицами, если у пользователя есть разрешения для всех из них (это невозможно, если хосты базы данных разные). Это просто пример:

 SELECT `table_a`.`column` AS `table_a_column`, `table_b`.`column` AS `table_b_column` FROM `database_a`.`table` AS `table_a` JOIN `database_b`.`table` AS `table_b` ON `table_b`.`smth` = `table_a`.`smth_else` 

Его невозможно, единственный способ, которым это возможно на PHP, – это когда вы используете кластеры / несколько узлов с настройкой репликации.

Очевидно, вы не понимаете некоторые из более технических вещей в отношении mysql, но давайте это раньше.

 $master = mysql_connect("master_host","abc","abcdb"); $slave = mysql_connect("slave_host","xyz","xyzdb"); if(mysql_select_db("abc_db",$master) && mysql_select_db("xyz_db",$slave)) { //Both Selected $sql = mysql_query("SELECT * FROM employee",$master); $rows = array(); while($row = mysql_fetch_assoc($sql)) { //Query the other $slave DB here! $slave_sql = mysql_query("SELECT * FROM department WHERE department_id = " . $row['id'],$slave); while($sub_row = mysql_fetch_assoc($slave_sql)) { $row = array_combine($sub_row,$row); } $rows[] = $row; } } 

Но это не то, что вы хотите делать на самом деле.

Просто запустите попытку присоединиться к двум базам данных на одном сервере, так как ваши хосты в вашем коде являются locahost , это возможно

 SELECT * FROM db1.employees db1_e,db2.records db2_r WHERE db1_e.employee_id = db2_r.record_eid 

Но не отключайте 1 к внешнему серверу без использования репликации, даже тогда вы можете не использовать репликацию.

Ссылки и ссылки:

http://nathan.rambeck.org/blog/2-joining-mysql-tables-across-multiple-databases

http://dev.mysql.com/doc/refman/5.0/en/replication.html

Вы не можете присоединяться к ним «на лету», не используя ни PHP, ни SQL, что вы можете сделать, это получить данные с обоих хостов и сравнить / объединить их вручную с помощью PHP.

Просто мы можем сказать. Вы не можете запускать или присоединяться к двум таблицам двух разных баз данных в PHP.

вы можете запускать запрос в приглашении mysql, но не в .php-файле, потому что каждый раз, когда вам нужно вызвать соединение с базой данных в mysql_query (); поэтому вы не можете одновременно запускать две базы данных.

у вас есть единственный выбор, просто возьмите данные таблицы первой базы данных в массиве, а затем запустите цикл массива, или вы можете использовать его id с IN в mysql или запустить два цикла while.