如何从一个MYSQL DB中选择并将其插入另一个?

时间:2016-12-12 19:17:45

标签: php mysql

我正在通过CRON运行一些小的更新并使用PHP执行它们。

现在我想从DB1中选择一些内容并将其插入DB2

我的问题是,这两个数据库s are on the same Server but with 2 different Users and it无法为两个数据库提供1个用户权限。

所以我知道这适用于一个用户和dbconnect:

insert into db1.tbl1(data1,data2) values (select data2, data1 from db2.tbl2)

如何在一个循环中使用2 db连接?

由于

3 个答案:

答案 0 :(得分:0)

如果你使用pdo。你宣布2个不同的连接。

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass)

$dbh2 = new PDO('mysql:host=localhost;dbname=test', $user2, $pass)

然后你这样做

$query = $dbh->prepare(select statement);
$query->execute();
$data = $query->fetchAll(); // you get array of data

$query = $dbh2->prepare(insert statement);
$query->execute()

答案 1 :(得分:0)

你可以像这样创建两个连接文件

<?PHP            
    function connect(){
        $servername = "localhost";
        $username = "user";
        $password = "psw";
        $database = "database";
        $conn = new mysqli($servername, $username, $password, $database);

       if(mysqli_connect_errno()){
            echo "Error conectando a la base de datos: " . mysqli_connect_error();
            exit();
        }
        else{
            $conn->query("SET NAMES 'utf8'");
            return $conn;
        }

    }

    function disconnect($connection){
        $disconnect = mysqli_close($connection);
    }
?>

并在你的php文件中,像这样

 require("connection.php");
    $connection=connect();
 require("connection2.php");
    $connection2=connect2();

显然在你的connection2.php你的功能名为connect2();在循环中,您可以使用两个连接

$query="insert into db1.tbl1(data1,data2) values (select data2, data1 from db2.tbl2)";
    $messageResult = "Good";
    $band = true;
    if(!($connection -> query($query))){
            $messageResult = "Error";
            $band = false;
    }

或..

$query="insert into db1.tbl1(data1,data2) values (select data2, data1 from db2.tbl2)";
    $messageResult = "Good";
    $band = true;
    if(!($connection2 -> query($query))){
            $messageResult = "Error";
            $band = false;
    }

答案 2 :(得分:0)

在两个不同的变量中创建2 dB连接并使其工作....在一个变量中获取第一个db的值,然后将该变量转储到第二个数据库....或者您可以使用另一个dB或缓存dB,如redis存储一次临时基地。