За последние 24 часа нас посетили 17603 программиста и 1720 роботов. Сейчас ищут 928 программистов ...

Реализация идеи без XML!!!

Тема в разделе "Прочие вопросы по PHP", создана пользователем shreck, 22 авг 2007.

  1. shreck

    shreck Активный пользователь

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    Требуется сделать следующее:

    Есть 2 базы данных на 1 сервере.

    Нужно написать импорт из 1 базы в другую. Я написал, но почему-то не все записи импортируются.
    Сделал следующее:
    PHP:
    1.  
    2. <?php
    3.   function SelectData($dir_id) {
    4.     if ($link = @mysql_connect("localhost","root","123456")) {
    5.     if (!mysql_select_db("db1", $link)) {
    6.             Error("mysql_select_db");
    7.         }
    8.     } else {
    9.         echo mysql_error();
    10.     }
    11.     $sql = mysql_query("select * from `news_news` where `dir_id` = ".$dir_id);
    12.       while($row = mysql_fetch_array($sql)) {
    13.       $Records[] = new Element($row['id'], $row['date'], $row['name'], '0', $row['announce'], $row['body'], $row['img'], $row['sort_order'], $row['publish'], $row['credate'], $row['change_date'], $row['lang']);
    14.     }
    15.     mysql_free_result($sql);
    16.     mysql_query("use db2");
    17.     return $Records;
    18. ?>
    19.  
    Получаем массив объектов Element
    Следовательно:
    PHP:
    1.  
    2. <?php
    3. $data = SelectData(123);
    4. ?>
    5.  
    здесь я так понимаю считывается информация из db1 и записывается в массив + освобождается запрос и для использования выбирается db2.

    А потом:
    PHP:
    1.  
    2. <?php
    3. foreach($data as $d) {
    4.   $sql = "insert into `news_news` (`Имена полей`) values ('$d->getId() и.т.д по методам')";
    5.   mysql_query($sql);  
    6. }
    7. ?>
    8.  
    Должны все записи из db1 записаться в db2.

    где db1 - база из которой нужно сделать импорт, и db2 база в которую нужно записать.
    Да еще структура у обеих баз данных идентичная.
    Может я что нить недопонимаю, но по идее все должно работать.

    Всем заранее спасибо за помощь.

    :)
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    телепаты бастуют.
     
  3. shreck

    shreck Активный пользователь

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    Уже разобрался...
    Поля нужно было обрабатывать mysql_escape_string, иначе получался неправильный запрос
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    забыл слово "всегда"
     
  5. shreck

    shreck Активный пользователь

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    440Hz
    ты на 200% прав
     
  6. shreck

    shreck Активный пользователь

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    А вообще как можно было более грамотно это сделать, чтобы например избавиться от запросов к БД в цикле?
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    пойдем к истокам.
    зачем вообще две базы и их копирование?
     
  8. shreck

    shreck Активный пользователь

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    1) Допустим есть компания и у нее сеть корпоративных сайтов на 1 движке, но с разной информацией в БД.
    2) Нужно сделать импорт новостей из основной базы в базу одного из корпоративных сайтов. (при идентичной структуре)
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ну так XML и вперед...
     
  10. Veem

    Veem Активный пользователь

    С нами с:
    21 авг 2007
    Сообщения:
    76
    Симпатии:
    0
    Так в теме как раз сказано, что без XML.
     
  11. shreck

    shreck Активный пользователь

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    да действительно, нужно именно без XML
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    OOPS! ступил. сорри...

    ну тогда SELECT а потом в цикде INSERT какие трудности-то? ты же все правильно делаешь.

    только ключи можно получить array_keys() и т.д. что б не особо париться.
     
  13. shreck

    shreck Активный пользователь

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    Всем спасибо за участие . . .