Копирование данных с двух разных серверов баз данных с использованием PDO php - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь создать скрипт, который будет копировать данные в таблицах с одного сервера базы данных на другой сервер базы данных.

Это то, что я пытался использовать PDO.

Итак, вот Вот как я получаю оба соединения, используя PDO (пример. php):

<?php
class DBOne {
   static $db ;
   private $dbh ;
   private function PDO_DBConnect(){
     $db_type = 'mysql'; 
     $db_name = 'database1';
     $user = 'guest' ;    $password = 'guest' ;
     $host = 'server1' ; 
    try {
        $dsn = "$db_type:host=$host;dbname=$db_name"; 
        $this->dbh = new PDO ( $dsn, $user, $password); 
        $this->dbh->setAttribute(PDO::ATTR_PERSISTENT, true);
        $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     } catch ( PDOException $e ) {
        print "Error!: " . $e->getMessage () . "\
" ;      die () ; 
     }  
   }
   public static function getInstance ( ) {
     if (! isset ( PDO_DBConnect::$db )) {
        PDO_DBConnect::$db = new PDO_DBConnect ( ) ;
     }
     return PDO_DBConnect::$db->dbh;
  }
}

class DBTWO {
   static $db ;
   private $dbh ;
   private function PDO_DBConnect(){
     $db_type = 'mysql'; 
     $db_name = 'database2';
     $user = 'root' ;    $password = 'admin' ;
     $host = 'server2' ; 
    try {
        $dsn = "$db_type:host=$host;dbname=$db_name"; 
        $this->dbh = new PDO ( $dsn, $user, $password); 
        $this->dbh->setAttribute(PDO::ATTR_PERSISTENT, true);
        $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     } catch ( PDOException $e ) {
        print "Error!: " . $e->getMessage () . "\
" ;      die () ; 
     }  
   }
   public static function getInstance ( ) {
     if (! isset ( PDO_DBConnect::$db )) {
        PDO_DBConnect::$db = new PDO_DBConnect ( ) ;
     }
     return PDO_DBConnect::$db->dbh;
  }
}

?>

Это для запроса при копировании данных ..

<?php
//session_start();
require_once 'sample.php';

    $o_DbA = DBOne::getInstance(); //Get Database A
    $o_DbB = DBTWO::getInstance(); // Get Database B
    $sql = 'SELECT * from table1';
    $stmt = $o_DBA->prepare($sql);
    $stmt->execute();
    $db_A_results = $stmt->fetch(PDO::FETCH_ASSOC);

    foreach($db_A_results as $results){
      foreach($results as $key => $value){
        $stmt = $o_DbB ->prepare("INSERT INTO `table2` (`id`, `control_number`) VALUES (:id, :control_number)");
        $stmt->bindParam(':id', $key);
        $stmt->bindParam(':control_number', $value);
        $stmt->execute();
      }
    }
?>

Чего мне не хватает? Я не копирую данные в таблицу ... заранее спасибо ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...