За последние 24 часа нас посетили 186293 программиста и 1962 робота. Сейчас ищут 1184 программиста ...

Перенос данных из одной базы в другую

Тема в разделе "PHP для новичков", создана пользователем romagromov, 11 июн 2018.

  1. romagromov

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

    С нами с:
    17 дек 2015
    Сообщения:
    73
    Симпатии:
    0
    Здравствуйте!

    Нашел в сети и под себя накатал php скрипт для переноса данных, если совпадают названия материалов.

    PHP:
    1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    2.  
    3.     <?php
    4.  
    5.     echo "Соединяемся с двумя базами";
    6.     echo '<hr>';
    7.     // Соединиться с с двумя базами
    8.  
    9.     $dbh1 = mysql_connect('localhost', 'base1', 'pass1');
    10.     mysql_query("SET NAMES utf8");
    11.  
    12.     $dbh2 = mysql_connect('localhost', 'base1', 'pass2');
    13.     mysql_query("SET NAMES utf8");
    14.  
    15.     echo $dbh1;
    16.     echo $dbh2;
    17.  
    18.     echo "Выполняем mysql_select_db";
    19.     echo '<hr>';
    20.  
    21.     mysql_select_db('base1', $dbh1);
    22.     mysql_select_db('base2', $dbh2);
    23.  
    24.  
    25.     if (!$dbh1) {
    26.     die('Not connected : ' . mysql_error());
    27.   }
    28.  
    29.       if (!$dbh2) {
    30.     die('Not connected : ' . mysql_error());
    31. }
    32.  
    33.     echo "Выполнить запрос (набор данных содержит результат)";
    34.  
    35.     // Выполнить запрос (набор данных $rs содержит результат)
    36.     $rs = mysql_query('select * from row_table1', $dbh1);
    37.  
    38.     echo "<p>Запрос выполнен</p>";
    39.  
    40.     echo "<p>Каждый ряд становится массивом с помощью функции mysql_fetch_array</p>";
    41.     // Цикл по recordset $rs
    42.     // Каждый ряд становится массивом ($row) с помощью функции mysql_fetch_array
    43.     while($row = mysql_fetch_array($rs)) {
    44.  
    45.     // Отображаем значения поля metadesc
    46.  
    47.  
    48.     // Присваиваем новой переменной значения поля metadesc
    49.     $introtext = $row['description_long'];
    50.     $metadesc = $row['metadesc'];
    51.     $title = $row['file_title'];
    52.  
    53.     // Записываем значения поля metadesc во вторую базу
    54.  
    55.     $sql = mysql_query ('UPDATE row_table2 SET introtext = "'.$introtext.'" WHERE title = "'.$row['file_title'].'"', $dbh2);
    56.  
    57.        
    58.     if ($introtext) {
    59.         echo '<p>'.$title.'</p>';
    60.     }
    61.  
    62.     }
    63.  
    64.       echo "<p>Finished</p>";
    65.  
    66.     // Закрыть соединение с БД
    67.     mysql_close();
    68.  
    69.  
    70. ?>
    Когда переносил id, catid, metadesc - все работало.

    Но начал переносить описание материалов - переносится только 3 штуки.
    Думаю дело в HTML внутри описаний, кавычки и т.д.

    Как решить проблему?
    Короче говоря, как экранировать переменную, с HTML внутри если там неизвестно сколько и какие вообще кавычки и т.д.?
     
    #1 romagromov, 11 июн 2018
    Последнее редактирование: 11 июн 2018
  2. username

    username Новичок

    С нами с:
    6 июл 2017
    Сообщения:
    223
    Симпатии:
    17
    копирование базы данных целиком не подходит?
     
  3. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Если до сих пор используете древнее расширение mysql_*, то функция mysql_real_escape_string
    --- Добавлено ---
    Забыл добавить: древнее, убогое, унылое и удалённое из новых версий PHP, что гарантирует стопроцентно нерабочий код на этих новых версиях.
     
  4. romagromov

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

    С нами с:
    17 дек 2015
    Сообщения:
    73
    Симпатии:
    0
    Нет. Я копирую выборочные данные из одного компонента в другой.

    Да! Все перенеслось! Спасибо!!!
     
    #4 romagromov, 12 июн 2018
    Последнее редактирование: 12 июн 2018