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

9wbgstp7  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(604)

我想将我们网络数据库中的表的所有数据插入到远程数据库(远程服务器上)
(此操作将每30分钟自动执行一次)
问题是我看不到如何从表\u local检索所有数据并将它们直接插入表\u 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 因为脚本将经常启动,并且表\u local包含很多行
有简单的解决办法吗?

i7uq4tfw

i7uq4tfw1#

<?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

bwntbbo3

bwntbbo32#

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

$sql = "INSERT INTO table_name (column1, column2...) VALUES ";
foreach($res $key => $val) {
    $sql .= "($val['column1'],$val['column2']...),";
}
$sql = rtrim($sql, ',');
...

相关问题