Как вставить строки таблицы из одной базы данных в другую (с двумя PDO) - PullRequest
0 голосов
/ 09 октября 2018

Я хотел бы вставить все данные таблицы, представленной в базе данных нашей сети, в удаленную базу данных (присутствует на удаленном сервере)

(это действие будет автоматизировано каждые 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 голосов
/ 09 октября 2018
<?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

0 голосов
/ 09 октября 2018

Один из методов - использовать один инструмент, такой как navicat или sequel pro.Другой метод использует следующие коды:

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