2013-04-11 2 views
0

У меня есть две разные базы данных, скажем, db_one и db_two. У каждого есть таблица. db1_emp_company и db2_emp_info соответственно.Как синхронизировать две таблицы разных баз данных MySQL на одном компьютере?

структура приведена ниже:

db_one   | db_two 
__________________________________ 
db1_emp_company | db2_emp_info 
__________________________________ 
phone_no   | contact_no 
emp_email  | email_add 
home_address  | address 

Эти две базы данных, размещенных на двух разных сайтов PHP на одном сервере.

Я хочу синхронизировать обе эти таблицы различных баз данных. Например, если пользователь обновляет phone_no из db1_emp_company (в db_one), он должен обновить contact_nodb2_emp_info (в db_two). И если пользователь обновляет emp_email от db1_emp_company (в db_one), он должен обновить email_add от db2_emp_info (в db_two). и так далее.

Возможно ли это?

+1

В вашем коде, где вы обновляете 'database1.table', вы также можете добавить еще один запрос на обновление' databas2.table' everytime –

+0

Я обновляю свою базу данных1.ini через форму. –

+1

Да, так что форма 'action' где-то и некоторый PHP-код обновляет вашу базу данных1.table через любой запрос, поэтому чуть ниже этой строки вы можете обновить свой «database2.table», а также –

ответ

0

Для этого вы можете использовать транзакции.

$mysql_host     = DB_HOST; 
$mysql_username    = DB_USER; 
$mysql_password    = DB_PASSWORD; 
$mysql_database1   = DATABASE1; 
$mysql_database2   = DATABASE2; 

$mysqli = new mysqli($mysql_host, $mysql_username, $mysql_password) or die(mysql_error()); 

/* Begin Transaction */ 
$mysqli->autocommit(FALSE); 


/* Insert data from db1 to db2 */ 
$query = " INSERT INTO $mysql_database1.table1"; 

$a = $mysqli->query($query); 

$query = " INSERT INTO $mysql_database1.table2 
      SELECT 
       * 
      FROM $mysql_database2.table2 
      WHERE NOT EXISTS(SELECT * from $mysql_database1.table2)  
"; 
$d = $mysqli->query($query); 


if ($a and $b) 
{ 
    $mysqli->commit();  
    echo "Data synched successfully."; 
} else {   

    $mysqli->rollback();   
    echo "Data failed to synch."; 
} 

Если один запрос не удался, он не позволит другому запустить и откатится. Это всего лишь пример кода. Вы можете использовать обновление вместо вставки.

+0

, как использовать это, когда два разных имени хоста. Пожалуйста помоги – Jyoti

0

Вы можете сделать так:

Об обновлении db_one таблицы в Сайта 1:

update `db_one`.`db1_emp_company` set phone_no = '1234567890' where conditions_here; 
update `db_two`.`db2_emp_info` set contact_no = '1234567890' where conditions_here; 

То же самое в db_two:

update `db_two`.`db2_emp_info` set contact_no = '1234567890' where conditions_here; #Its a same thing as above 
update `db_one`.`db1_emp_company` set phone_no = '1234567890' where conditions_here; 

Если вы размещаете свой код, который используется для обновления вещи. Будет полезно дать точный ответ.

Смежные вопросы