Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从两个不同的PostgreSQL数据库同步两个表_Php_Postgresql - Fatal编程技术网

Php 从两个不同的PostgreSQL数据库同步两个表

Php 从两个不同的PostgreSQL数据库同步两个表,php,postgresql,Php,Postgresql,我有两个来自两个不同数据库的表,我需要一个php函数来同步数据,以便表2可以始终验证表1上的内容并更新其信息。 有人举过一个例子来说明如何做到这一点吗?提前感谢。此示例将连接到两个数据库,并且对于第一个数据库的每个作者,将使用相同的id更新目标数据库的作者。 当然,在执行和更新之前,您必须设置任何必要的检查、搜索和其他详细信息(如果愿意,也可以进行插入或替换),但这完全取决于您将要执行的操作:) 我希望它有用。关于这件事,请随时提问。享受!:) D.S.的回答将完成工作 您还可以考虑设置插入

我有两个来自两个不同数据库的表,我需要一个php函数来同步数据,以便表2可以始终验证表1上的内容并更新其信息。
有人举过一个例子来说明如何做到这一点吗?提前感谢。

此示例将连接到两个数据库,并且对于第一个数据库的每个作者,将使用相同的id更新目标数据库的作者。 当然,在执行和更新之前,您必须设置任何必要的检查、搜索和其他详细信息(如果愿意,也可以进行插入或替换),但这完全取决于您将要执行的操作:)



我希望它有用。关于这件事,请随时提问。享受!:)

D.S.的回答将完成工作

您还可以考虑设置插入/更新后触发器并使用。这样,它们将保持同步,而无需在PHP中担心


作为一个补充说明,在这两种情况下都要非常小心DB错误可能发生的情况。当数据库出现错误时,您可能会失去与任一解决方案的同步,因为事务将是自治的。

在插入、更新和删除时创建触发器。调用触发器过程时,将操作中完成的所有更改(
Insert
update
delete
)存储到数据库表中(我们称之为
sync\u表
)。运行一些脚本,将数据从
sync_表
复制到另一个数据库表<代码>同步表将存储修改、插入和删除的数据

要发布
创建表
?,您需要实现自己的逻辑来同步两个不同数据库之间的数据首先感谢您的回复:)我是PHP新手,所以我不完全理解您的代码。。告诉我:在这种情况下,信息是更新的!但是如果目标数据库是空的,并且我希望脚本像源数据库一样更新它?如果您想要这样做,您必须使用插入查询而不是更新查询,但是您应该在之前检查目标数据库中是否已经存在匹配行,在这种情况下,请使用示例中的更新。您还可以使用SQLREPLACE命令,这取决于主键的外观。
<?php

if (false !== ($con1 = pg_connect("your source connection string"))) {
  if (false !== ($con2 = pg_connect("your dest connection string"))) {
    if (false !== ($result = pg_query($con1, "SELECT id, author, email FROM authors"))) {
      while (false !== ($row = pg_fetch_assoc($result))) {
        pg_query($con2, "UPDATE authors SET email=".pg_escape_string($con2, $row['email']).
          'WHERE id='.pg_escape_string($con2, $row['id']));
      }
      pg_free_result($result);
    }
    pg_close($con2);
  }
  pg_close($con1);
}

?>