将第一个数据库的一列复制到MySQL中的第二个数据库中


Copy one column of the first database in the second database in MySQL

我用更新命令错误地更改了数据库的所有一列(约18000条记录)

我有备份,所以将其重新存储到另一个名为的数据库中

我想要的只是将备份数据库的一列复制到主数据库的那一列(更新)所以我用php:写了这段代码

ini_set('max_execution_time', 3000000000000000000000000000000000000000000);
error_reporting(E_ALL);
ini_set('display_errors', 1);
function connection1()
{
    $DBName1 = "db1";
    $DBUser1 = "user1";
    $DBPassword1 = "pass1";
    $DBHost1 = "localhost";

    try {
        $pdo = new PDO("mysql:host=" . $DBHost1 . ";dbname=" . $DBName1 .
            ";charset=utf8", $DBUser1, $DBPassword1, array(
            PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'",
            PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_ERRMODE));
        return $pdo;
    }
    catch (PDOException $e) {
        echo "Failed to get DB handle: " . $e->getMessage() . "'n";
        exit;
    }
}
function connection2()
{
    $DBName2 = "db2";
    $DBUser2 = "user2";
    $DBPassword2 = "pass2";
    $DBHost2 = "localhost";

    try {
        $pdo = new PDO("mysql:host=" . $DBHost2 . ";dbname=" . $DBName2 .
            ";charset=utf8", $DBUser2, $DBPassword2, array(
            PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'",
            PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_ERRMODE));
        return $pdo;
    }
    catch (PDOException $e) {
        echo "Failed to get DB handle: " . $e->getMessage() . "'n";
        exit;
    }
}

$con2 = connection2();
$NewItem = $con2->prepare("select id,fid,title,sign from news_tmp");
$NewItem->execute();
$con1 = connection1();
$contwovalue = array();
for ($i = 0; $row = $NewItem->fetch(PDO::FETCH_ASSOC); $i++) {
    $NewItem2 = $con1->prepare("select id,fid,title,sign from news_tmp where id='{$row['id']}'");
    $NewItem2->execute();
    $contwovalue = $NewItem2->fetch(PDO::FETCH_ASSOC);
    if (($contwovalue['id'] == $row['id']) && ($contwovalue['fid'] == $row['fid']) &&
        ($contwovalue['sign'] == $row['sign'])) {
        $NewItem2 = $con1->prepare("UPDATE `news_tmp` SET `title`=? where id=?");
        $NewItem2->bindValue(1, $row['title'], PDO::PARAM_INT);
        $NewItem2->bindValue(2, $contwovalue['id'], PDO::PARAM_INT);
        $NewItem2->execute();
    }
}

我只想问一个问题:这种方式是最好的方式吗?或者这个问题存在另一种方式?

为什么不直接使用查询呢?

UPDATE 
  database.news
SET 
  database.news.title= backupdatabase.news.title
WHERE 
  database.news.id= backupdatabase.news.id

编辑:哦,大约晚了6个月:-)