我有两个不同的数据库,比如说db_one和db_two。每个人都有一张桌子。分别为db1_emp_company
和db2_emp_info
。
结构如下:
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_no
的{{1}}(在db_two中)。如果用户更新db2_emp_info
emp_email
(在db_one中),它应该更新db1_emp_company
email_add
(在db_two中)。等等。
有可能吗?
答案 0 :(得分:1)
为此,您可以使用交易。
$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.";
}
如果一个查询失败,它将不允许另一个查询运行并将回滚。这只是示例代码。您可以使用update而不是insert。
答案 1 :(得分:0)
你可以这样做:
在site1中更新db_one
表:
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;
如果您发布用于更新内容的代码。给出确切的答案会很有帮助。
答案 2 :(得分:0)
您可以使用mysqldiff来解决此问题。查看此页面:http://www.mysqldiff.org/index.php