Php 使用PDO将行从一个数据库中的表移动到另一个数据库
第一个问题,我一直在不懈地寻找答案,但人们似乎在问“从一个数据库到另一个数据库”,而他们指的是表。无论如何 我有一个数据库,里面有很多表格,记录了各种游戏绘图的结果。这些表格有许多不同的结构,最少的有5个字段,最大的大约有20个字段。我还有一个数据库,其中包含了这些游戏一年多的结果表。所以在db1中我有game1,在db2中我有game1_归档。我所写的是一个每天运行一次的脚本,并将一年以上的db1表中的任何条目移动到相应的db2表中 我在db1中有一个要迭代的表列表:Php 使用PDO将行从一个数据库中的表移动到另一个数据库,php,mysql,database,pdo,Php,Mysql,Database,Pdo,第一个问题,我一直在不懈地寻找答案,但人们似乎在问“从一个数据库到另一个数据库”,而他们指的是表。无论如何 我有一个数据库,里面有很多表格,记录了各种游戏绘图的结果。这些表格有许多不同的结构,最少的有5个字段,最大的大约有20个字段。我还有一个数据库,其中包含了这些游戏一年多的结果表。所以在db1中我有game1,在db2中我有game1_归档。我所写的是一个每天运行一次的脚本,并将一年以上的db1表中的任何条目移动到相应的db2表中 我在db1中有一个要迭代的表列表: try { $d
try {
$db1_pdo = new PDO($db_game, $db_username, $db_password);
$db2_pdo = new PDO($db_archive, $db_username, $db_password);
} catch (PDOException $exception) {
echo 'Connection failed: ' . $exception->getMessage();
die();
}
$cutoff_date = date('Y-m-d', time() - (366 * 24 * 60 * 60));
$tables = array();
$result = $db1_pdo->query("SHOW TABLES");
$tables = $result->fetchAll(PDO::FETCH_COLUMN, 0);
最简单的方法是插入uFrom uWhere uQuery,如下所示:
foreach ($tables as $table) {
$result = $db1_pdo->query("INSERT INTO archive.$table"."_archive * FROM $table WHERE drawing_date < '$cutoff_date'");
$db1_pdo->query("DELETE FROM $table WHERE drawing_date < '$cutoff_date'");
}
foreach($tables作为$table){
$result=$db1_pdo->query(“插入存档.$table”。“$table中的”\u archive*,其中绘图日期<“$cutoff_date”);
$db1_pdo->query(“从$table中删除,其中绘图日期<“$cution_date”);
}
但这不起作用,我想是因为db1_pdo不能同时访问这两个数据库?访问两个数据库的用户名和密码相同。有没有简单的方法让INSERT开始工作?如果我手动插入构建语句,那将是一件痛苦的事情,因为每个表都有不同的结构。我认为使用INSERT INTO。。。选择。。。这种方法在你的情况下是有效的
$result = $db1_pdo->query("INSERT INTO archive.$table"."_archive SELECT * FROM $table WHERE drawing_date < '$cutoff_date'");
$result=$db1\u pdo->query(“插入存档.$table”。“\u存档从绘图日期所在的$table中选择*”<“$cutoff\u date”);
有关此语法的更多信息,请访问:您缺少
SELECT
关键字。编写一个SELECT
查询,返回所需的行。然后将INSERT添加到foo(cols)`之前,将其转换为INSERT。。选择
statement。非常感谢,您刚刚试用了它,它成功地将记录从一个数据库传输到另一个数据库,然后将其删除。因为缺少选择,我省了很多工作!