Первый вопрос, я неустанно искал ответ, но кажется, что люди, кажется, спрашивают «от одной базы данных к другой», когда они имеют в виду таблицу. Anyways ...Перемещение строк из таблиц в одной базе данных в другую базу данных с использованием PDO
У меня есть база данных, полная таблиц, которые записывают результаты для различных игровых рисунков. Эти таблицы имеют много разных структур, причем наименьшее число из них имеет 5 полей и самое большое - около 20. У меня также есть база данных, содержащая таблицы результатов из этих игр, возраст которых превышает год. Так что в db1 у меня есть game1, а в db2 у меня есть game1_archive. То, что я пишу, - это сценарий, который запускается один раз в день и перемещает любые записи из таблиц db1, которые старше года, соответствуют соответствующей таблице db2.
У меня есть список таблиц в DB1 перебирать:
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);
Что было бы проще сделать, это просто INSERT INTO _ FROM _ WHERE _ запрос следующим образом:
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'");
}
Но это не работает, я думаю, потому что db1_pdo не имеет доступа к обеим базам данных? Имя пользователя и пароль для доступа к обеим базам данных одинаковы. Есть ли простой способ заставить INSERT INTO работать? Если у меня есть инструкции для сборки INSERT, это будет больно, потому что каждая таблица имеет другую структуру.
Вы пропускаете 'SELECT' ключевое слово , Напишите запрос 'SELECT', который возвращает нужные строки. Затем добавьте INSERT INTO foo (cols) 'перед этим, чтобы превратить его в инструкцию' INSERT .. SELECT'. – spencer7593