简体   繁体   中英

How to insert rows of a table from one database to another (with two PDO)

I would like to insert all the data of a table presented on the database of our network on a remote database (present on a remote server)

(this action will automate every 30 minutes)

The problem is that I do not see how to retrieve all the data from the table_local and insert them directly into the table_remote.

Indeed, to connect to these two databases, I use 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 ?

?>

I would like to avoid, if possible, the foreach because the script will be launched very often and the table_local contains a lot of line

Is there a simple solution?

One method is using one tool like navicat or sequel pro to achieve. Another method is using following codes:

$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']]);


}

?>

for reference check this link https://phpdelusions.net/pdo_examples/insert

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM