如何将表的行从一个数据库插入到另一个数据库(使用两个PDO)

时间:2018-10-09 12:06:16

标签: php mysql database pdo sql-insert

我想插入我们网络的数据库中显示的表的所有数据 在远程数据库(位于远程服务器上)上

(此操作将每30分钟自动执行一次)

问题是我看不到如何从table_local检索所有数据并将其直接插入table_remote。

实际上,要连接到这两个数据库,我使用PDO

<?php 

// LOCAL

$user = 'user1';
$password = 'password1';
$dns = 'completeDNS1';
$bdd = new PDO($dns, $user, $password);

$request = $bdd->prepare("SELECT * FROM table_local");
$request ->execute();

// REMOTE

$user = 'user2';
$password = 'password2';
$dns = 'completeDNS2';
$bdd = new PDO($dns, $user, $password);

// How to insert the previous data on the table_remote ?

?>

如果可能的话,我想避免使用foreach,因为脚本将非常频繁地启动并且table_local包含很多行

有一个简单的解决方案吗?

2 个答案:

答案 0 :(得分:1)

一种方法是使用navicat或sequel pro这样的工具来实现。 另一种方法是使用以下代码:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Headers" value="Content-Type" />
      <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

答案 1 :(得分:0)

<?php 

// LOCAL

$user = 'user1';
$password = 'password1';
$dns = 'completeDNS1';
$bdd1 = new PDO("mysql:host=localhost;dbname=$dns", $user, $password);


$user = 'user2';
$password = 'password2';
$dns = 'completeDNS2';
$bdd2 = new PDO("mysql:host=localhost;dbname=$dns", $user, $password);



$request = $bdd1->prepare("SELECT * FROM table_local");

// REMOTE
while ($row = $request->fetch()) {
    $sql = "INSERT INTO table_remote (name, surname, sex) VALUES (?,?,?)";
    $stmt= $bdd2->prepare($sql);
    $stmt->execute([$row['name'], $row['surname'], $row['sex']]);


}

?>

作为参考,请检查此链接https://phpdelusions.net/pdo_examples/insert