数据库到数据库通信

时间:2013-11-10 05:34:45

标签: php mysql database

我正处于为与我合作的公司建立网站的规划阶段。该公司是一家电子产品批发商,希望获得更好的网络存在。他们目前的POS系统使用PervasiveSQL作为数据库。我将使用MySQL作为网站DB和PHP语言。

我想将此网站与当前数据库集成;我希望网站使用它自己的数据库,以防万一发生入侵,一切都不会受到损害。当网站接收订单时,我希望它也可以复制到他们的POS系统中。

我该如何完成此操作?我只是在我的代码中编写第二个INSERT语句并插入到两个数据库中?有没有一种方法可以使用,当数据库插入表格时,它会触发一个事件,该信息会插入信息并将其放入另一个数据库?我问这个是因为当新的产品或客户帐户被添加到原始POS系统时,我希望将这些信息放在网站数据库中。

2 个答案:

答案 0 :(得分:1)

根据您的描述,您可能会做的是让网站使用只读凭据访问POS系统的数据库。那你就不需要复制数据了。如果网站被利用,攻击者将无法获得对POS数据库的写入权限。

如果您需要从Web应用程序写入POS数据库,并担心直接访问它,您可以在两者之间放置一个Web服务(只能从您的内部网络访问),并调用它而不是直接访问POS数据库。实际上,建立一个Web服务也是从POS系统读取的好方法。

基本上,复制数据和保持事物同步可能是一个很大的问题,最好在选择的情况下避免。

答案 1 :(得分:0)

您没有说明如何对数据库连接进行编码,但很可能在没有限制的情况下同时连接到多个数据库。

我们假设你正在使用PDO。

要连接到2个数据库,您可以使用:

$db1 = new PDO('mysql:host=localhost;dbname=database1;charset=utf8', 
'username1', 'password1');

$db2 = new PDO('mysql:host=localhost;dbname=database2;charset=utf8', 
'username2', 'password2');

这将导致2个数据库引用$ db1和$ db2

要插入两个数据库,您可以使用查询提交中的引用

$result1 = $db1->exec("INSERT INTO table(firstname, lastname) VAULES('John', 'Doe')");
$result2 = $db2->exec("INSERT INTO table(firstname, lastname) VAULES('John', 'Doe')");