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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将表的行从一个数据库插入另一个数据库(使用两个PDO)相关的知识,希望对你有一定的参考价值。

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

(此操作将每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包含很多行

有简单的解决方案吗?

答案

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

$sql = "INSERT INTO table_name (column1, column2...) VALUES ";
foreach($res $key => $val) {
    $sql .= "($val['column1'],$val['column2']...),";
}
$sql = rtrim($sql, ',');
...
另一答案
<?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

以上是关于如何将表的行从一个数据库插入另一个数据库(使用两个PDO)的主要内容,如果未能解决你的问题,请参考以下文章

如何将表的记录从数据库检索到另一个数据库

将表的列复制到另一个表SQL

如何将选定的行从一个 wpf 数据网格复制到另一个 wpf 数据网格? [关闭]

如何将表值从一个数据库插入到另一个数据库? [关闭]

Numpy - 使用另一个数组的行从一个数组中删除行

如何将行从另一个数据库文件插入到房间数据库中?