За последние 24 часа нас посетили 186405 программистов и 1966 роботов. Сейчас ищут 1196 программистов ...

Поиск и вывод и вывод одинаковых строк из 2-х БД

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

  1. romagromov

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

    С нами с:
    17 дек 2015
    Сообщения:
    73
    Симпатии:
    0
    Здравствуйте!
    Есть 2 базы MySQL.
    В каждой базе есть одинаковые таблицы content.
    В этих таблицах есть поля ID и Title.
    В 2-х базах разное количество строк, но среди них есть элементы с одинаковыми Title, но разными ID.
    Моя задача вывести на экран все элементы с одинаковыми Title и их ID, чтобы получить таблицу различия ID.

    У меня есть скрипт, который по этому принципу заменяет ID из одной базы в другой если имена элементов совпадают. Но мне не нужно ничего менять - просто вывести их, если условие соблюдается. Вот я не могу понять, как это сделать.

    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', 'user1', 'pass1');
    10.     mysql_query("SET NAMES utf8");
    11.    
    12.     $dbh2 = mysql_connect('localhost', 'user2', '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('biblsoft_base', $dbh1);
    22.     mysql_select_db('mobifile_base', $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 base1_content', $dbh1);
    37.    
    38.     echo "Запрос выполнен";
    39.    
    40.     echo "Каждый ряд становится массивом с помощью функции mysql_fetch_array";
    41.     // Цикл по recordset $rs
    42.     // Каждый ряд становится массивом ($row) с помощью функции mysql_fetch_array
    43.     while($row = mysql_fetch_array($rs)) {
    44.  
    45.     // Отображаем значения поля metadesc
    46.  
    47.    
    48.     // Присваиваем новой переменной значения поля metadesc
    49.     $title = $row['title'];
    50.     $id = $row['id'];
    51.    
    52.     // Записываем значения поля metadesc во вторую базу
    53.     $sql = mysql_query ('UPDATE base2_content SET id = "'.$id.'" WHERE title = "'.$row['file_title'].'"', $dbh2);
    54.    
    55.    
    56.          
    57.     if ($id) {
    58.         echo '<p>'.$id.' '.$title.'</p>';
    59.     }
    60.    
    61.    
    62.     }
    63.      
    64.       echo "Finished";
    65.  
    66.     // Закрыть соединение с БД
    67.     mysql_close();
    68.    
    69.  
    70. ?>
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Разместите таблицы в одной БД и далее:
    Код (Text):
    1. SELECT `t1`.`Title`, `t1`.`ID` `id1`, `t2`.`ID` `id2` FROM `t1` LEFT JOIN `t2` USING(`Title`)
     
  3. romagromov

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

    С нами с:
    17 дек 2015
    Сообщения:
    73
    Симпатии:
    0
    То есть создать 2 таблицы в одной базе?

    А сам php как должен выглядеть?
     
  4. romagromov

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

    С нами с:
    17 дек 2015
    Сообщения:
    73
    Симпатии:
    0
    Короче, перенес одну таблицу в одну базу.

    Пытаюсь вот так вывести - не работает:

    PHP:
    1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    2.  
    3.     <?php
    4. /*Подключаемся к БД*/
    5. $db = mysql_connect('localhost','user','pass');
    6.  
    7. mysql_select_db('base', $db);
    8.  
    9. /*Делаем запрос к БД*/
    10.  
    11. $result = mysql_query ("SELECT `table_content`.`Title`, `title`.`ID` `id`, `table_content_2`.`ID` `id` FROM `table_content` LEFT JOIN `table_content_2` USING(`Title`)");
    12.  
    13.  
    14. /*Преобразовываем результат в массив*/
    15. $myrow = mysql_fetch_array($result);
    16.  
    17. /*Выводим результат на экран*/
    18. echo $myrow['title'];
    19.  
    20. ?>
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Сделайте нормальную выборку и вывод, как в первом посте.

    И если нужно пересечение, то INNER JOIN, а не LEFT JOIN. Я поторопился в пред. посте.