Помогите перенести данные таблицы MYSQL

zaxavar
На сайте с 08.10.2012
Offline
167
472

Здравствуйте!

Есть 2 базы данных.

Обе базы данных имеют одинаковые таблицы и поля.

Задача перенести из таблицы 2 в таблицу 1 значения поля custom_fields_8

Но в таблицах есть еще и поле title. Так вот в базе 2 значения поля title отличаются от значений в таблице 1 (их меньше). ТО есть нужна еще проверка на идентичные значения поля title.

Сам алгоритм мне понятен, но как правильно это выглядит в виде кода - не могу без помощи сделать.

Алгоритм такой:

Соединяемся с базой 1 и 2.

Запускаем цикл по ID из базы 2.

переменная $title = значение поля title

переменная $custom_fields_8 = значение поля custom_fields_8

в базе 1:

Еще один цикл по ID но в другой базе

если значение поля title = переменная $title

то записать в поле custom_fields_8 переменную $custom_fields_8

конец цикла базы 1

конец цикла базы 2

Прошу помощи, как это все записать в виде скрипта.

Спасибо.

ВМЕСТО или ВМЕСТЕ с ADSENE - ADSTERRA - https://publishers.adsterra.com/referral/wf8uqXSYuu Раcскажу, подскажу.
K5
На сайте с 13.07.2014
Offline
49
#1

Мне неизвестен ваш интрефейс доступа к БД, поэтому буду писать запросы

Получаем данные для вставки во вторую таблицу. Нам нужны только те строки из table, для которых есть соответствие в table2 у которых title совпадает

SELECT custom_fields_8, title FROM table 1 WHERE title IN (SELECT title FROM table where title != '')

Получили массив с данными и делаем апдейт в цикле:

Например на php:

foreach($items as $item)

{

$sql = 'UPDATE table2 SET custom_fields_8 = " '.$item['custom_fields_8'].'" WHERE title = "'.$item['title'].'"';

// выполняем запрос

}

Вообще всё можно сделать одним запросом к БД, но я не знаю как)

zaxavar
На сайте с 08.10.2012
Offline
167
#2
karpo518:
Мне неизвестен ваш интрефейс доступа к БД, поэтому буду писать запросы

Получаем данные для вставки во вторую таблицу. Нам нужны только те строки из table, для которых есть соответствие в table2 у которых title совпадает

SELECT custom_fields_8, title FROM table 1 WHERE title IN (SELECT title FROM table where title != '')

Получили массив с данными и делаем апдейт в цикле:
Например на php:

foreach($items as $item)
{
$sql = 'UPDATE table2 SET custom_fields_8 = " '.$item['custom_fields_8'].'" WHERE title = "'.$item['title'].'"';
// выполняем запрос
}


Вообще всё можно сделать одним запросом к БД, но я не знаю как)

Интерфейс?

Я пытаюсь сделать все в файле с расширением php.

Пока удалось только подключиться к одной базе

	<?php

// Соединиться с сервером БД
mysql_connect("localhost", "user", "password") or die (mysql_error ());
mysql_set_charset( 'utf8' );
// Выбрать БД
mysql_select_db("base1") or die(mysql_error());

// SQL-запрос
$strSQL = "SELECT * FROM wsoft_jdownloads_files";


// Закрыть соединение с БД
mysql_close();
?>

Как сюда добавить ваш код?

---------- Добавлено 22.09.2015 в 14:14 ----------

В общем, остановился на пол пути. Массив с данными получаю, а вторая часть не работает.

Даже просто не выводится через echo, соответственно, ничего и не записывается.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


<?php
// Соединиться с сервером БД 1
mysql_connect("localhost", "freeprogs_user", "password") or die (mysql_error ());
mysql_set_charset( 'utf8' );
// Выбрать БД
mysql_select_db("freeprogs_base") or die(mysql_error());

// SQL-запрос
$strSQL = "SELECT * FROM freeprogs_jdownloads_files";

// Выполнить запрос (набор данных $rs содержит результат)
$rs = mysql_query($strSQL);


// Цикл по recordset $rs
// Каждый ряд становится массивом ($row) с помощью функции mysql_fetch_array
while($row = mysql_fetch_array($rs)) {

// Отображаем значения поля custom_field_8
echo $row['custom_field_8'] . "<br />";

}
echo "<hr><hr><hr>";

// Закрыть соединение с БД
mysql_close();


// Соединиться с сервером БД 2
mysql_connect("localhost", "winsoft_user", "password") or die (mysql_error ());
mysql_set_charset( 'utf8' );
// Выбрать БД
mysql_select_db("winsoft_base") or die(mysql_error());


foreach($rows as $row)
{
$sql = 'UPDATE winsoft_base SET custom_field_8 = " '.$row['custom_field_8'].'" WHERE file_title = "'.$row['file_title'].'"';

echo $rows['custom_field_8'];

}


// Закрыть соединение с БД
mysql_close();

?>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий