【问题标题】:How do I transfer newly added rows in an SQL Server table to an identical MySQL table using PHP?如何使用 PHP 将 SQL Server 表中新添加的行传输到相同的 MySQL 表?
【发布时间】:2019-09-07 08:22:38
【问题描述】:

基本上,我在 SQL Server 和 MySQL 中有两个相同的表。我想以这样一种方式使用 PHP,我只需要在其中一个中手动插入新值。我想编写一个 PHP 代码,其中新插入的 SQL Server 表中的值也将插入到 MySQL 中的相同对应项中,只需按一下按钮。

例如,我在 SQL Server 和 MySQL 中有一个名为“Customers”的表,其中包含“ID(自动递增)”、名称和地址行。我将新值插入到 SQL Server 中的这些列中。如何做到这一点,我只需按下 PHP 中的按钮,就不必在 MySQL 中再次执行整个“插入”过程?

非常感谢任何想法!

【问题讨论】:

    标签: php mysql sql sql-server xampp


    【解决方案1】:

    根据 cmets 中提供的新信息,我正在更改答案并调整代码。

    代码示例:

    <?php
     $serverName = "server"; //serverName\instanceName
     $connectionInfo_mssql = array("Database"=>"DB", "UID"=>"username", "PWD"=>"password","CharacterSet"=>"UTF-8");
     $conn_mssql = sqlsrv_connect($serverName, $connectionInfo_bi);
     $conn_mysql = new mysqli("server", "username", "password", "db");
    
    //SELECT FROM MS SQL DB
    $mssql_array = array();
    $ms_sql = "SELECT column_names FROM db_table";
    $mssql_query = sqlsrv_query($conn_mssql , $ms_sql);
    while($row = sqlsrv_fetch_array($mssql_query) {
      $mssql_array[] = array('name' => $row['name'],
                             'adress' => $row['adress']);
    }
    
    foreach($mssql_array as $key => $value) {
    
       //SELECT FROM MySQL DB
       $my_sql = "SELECT column_names FROM db_table WHERE name = '".$value['name']."' AND adress = '".$value['adress']."'";
       $mysql_query = mysqli_query($conn_mysql , $my_sql);
       $num_rows = mysqli_num_rows($mysql_query);
    
       if ($num_rows == 0) {
         //Insert in MySQL DB
         $sql = "INSERT INTO db_table (db_columns) VALUES (variables_from_array)";
         $sql_query = mysqli_query($conn_mysql, $sql);
       } else {
         //There is a record in DB, and maybe you want to update it. If not, then lose this else part.
       }
    
    }
    
    echo 'Table Customers from MS SQL DB and table Customers from MySQL DB are now synced!';
    
    ?>
    

    【讨论】:

    • 我明白了,如果我要同时向两个表中插入值,这很有效。但是,如果我想要做的只是将我所做的更改从一张桌子转移到另一张桌子怎么办?例如,同样,SQL Server 和 MySQL 中的“客户”表。两者都有相似的列,但是 SQL Server 中的表比 MySQL 中的表多 50 行。如何使用 PHP 将这些行添加到 MySQL 表中?
    • 好的,所以您不想在用户单击按钮时执行此操作,而是在稍后的某个阶段为每条记录传输特定列而无需用户交互?我说对了吗?
    • 不,抱歉,但我认为也不是这样。我想说的是,如果这两个表中有不同数量的记录怎么办。例如,SQL Server 和 MySQL 中的“Customers”表都有相同的列,但 SQL Server 中的 Customers 表比 MySQL 对应的表多 50 条记录。我想要做的是制作一个 PHP 代码,它可以检测到 MySQL 客户表缺少 50 条记录,然后按下按钮,它从 SQL 服务器客户表中获取额外的 50 条记录并将其添加到 MySQL .对不起,如果我没有任何意义
    • 好的,那么您想比较两个数据库并同步它们之间的差异吗?
    • 好的,我现在明白了。有几种方法可以做到这一点。 1)从您的主数据库(我猜是MSSQL)中,您可以选择所有值,然后在您的辅助数据库(我猜是MySQL)上截断表并插入主数据库中的所有内容。 2)从主数据库中选择所有内容并从辅助数据库中选择所有内容并仅插入差异。 3)更改初始插入的逻辑,以便同时插入两个数据库。您觉得这些中的任何一个都可以,以便我们可以从那时开始继续?
    猜你喜欢
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多