2013-06-19 6 views
0

Я пытаюсь создать отдельный поисковый сайт (site4 с использованием database4), который обновляется каждый час из 3 разных сайтов каждый из которых имеет свою собственную базу данных. Я хочу объединить данные из базы данных1, database2 и database3 в базу данных4.Как объединить 3 таблицы базы данных образуют 3 различных баз данных в базу данных 4

Я также хочу удалить дубликаты во время объединения, поэтому мне сказали использовать функцию UNION UNION.

На том же сервере, у меня есть 4 отдельные веб-сайты с каждого сайта, имеющие свою собственную базу данных MySQL:

site1 -> Database1, 1 таблица, 16 полей

site2 -> database2, 1 стол, 16 полей

site3 -> database3, 1 таблица, 16 полей

site4 -> database4, 1 таблица, 16 полей (в настоящее время пустая)

Все 4 базы данных имеют идентичную структуру, поскольку каждая база данных имеет только 1 таблицу с 16 полями.

Во всех 4 базах данных имена таблиц одинаковы (Post_Data), и все 16 полей идентичны. Поле индекса (поле 11) называется Post_Date.

С помощью некоторого форума я смог написать следующий PHP-код, но он не работает, и я не получаю ошибок.

Вы видите, что неправильно в коде внизу и что необходимо сделать для его исправления?

Заранее спасибо.

<?php 

    // Website 1 
     $host1 = 'site1.com'; 
     $database1 = 'data_1'; 
     $username1 = 'user_1'; 
     $password1 = 'pass_1'; 
     $TableName1 = 'Post_Data'; 

    // Website 2 
     $host2 = 'site2.com'; 
     $database2 = 'data_2'; 
     $username2 = 'user_2'; 
     $password2 = 'pass_2'; 
     $TableName2 = 'Post_Data'; 

    // Website 3 
     $host3 = 'site3.com'; 
     $database3 = 'data_3'; 
     $username3 = 'user_3'; 
     $password3 = 'pass_3'; 
     $TableName3 = 'Post_Data'; 

    // Website 4 - Search Database 
     $host4 = 'site4.com'; 
     $database4 = 'data_4'; 
     $username4 = 'user_4'; 
     $password4 = 'pass_4'; 
     $TableName4 = 'Post_Data'; 

    // Connect to all 4 Databases 
     $connection1 = mysql_connect($host1, $username1, $password1) or die ('Cannot connect to the database because: ' . mysql_error()); 
     $connection2 = mysql_connect($host2, $username2, $password2, true) or die ('Cannot connect to the database because: ' . mysql_error()); 
     $connection3 = mysql_connect($host3, $username3, $password3, true) or die ('Cannot connect to the database because: ' . mysql_error()); 
     $connection4 = mysql_connect($host3, $username4, $password4, true) or die ('Cannot connect to the database because: ' . mysql_error()); 

    // Combine all 3 Databases into the Search Database #4 
     mysql_select_db ($database1,$connection1); 
     mysql_select_db ($database2,$connection2); 
     mysql_select_db ($database3,$connection3); 
     mysql_select_db ($database4,$connection4); 

     mysql_query("USE $database4"); 
     mysql_query("CREATE TABLE temp AS 
     SELECT * FROM $database1.$TableName1 
     UNION 
     SELECT * FROM $database2.$TableName2 
     UNION 
     SELECT * FROM $database3.$TableName3 
     "); 
     mysql_query("CREATE INDEX ix_post_date ON temp.Post_Date"); 
     mysql_query("RENAME TABLE Post_Data TO backup, temp TO Post_Data"); 

    // Close databases connections 
     mysql_close($connection1); 
     mysql_close($connection2); 
     mysql_close($connection3); 
     mysql_close($connection4); 

    // Finished 
     $date_time = date('m-d-Y H:i:s'); 
     echo '<h1>Finished - '.$date_time.'</h1>'; 

?> 

ответ

0

Вы создаете 4 разных соединения с базой данных, но mysql_query будет работать против одного соединения.

Запрос должен знать, к какой базе данных подключиться. Вы можете увидеть How do you connect to multiple MySQL databases on a single webpage? для хорошего примера

Вы должны быть в состоянии видеть, что ваш создать запрос таблицы не удается, отображая ошибку:

// Check result 
// This shows the actual query sent to MySQL, and the error. Useful for debugging. 
if (!$result) { 
    $message = 'Invalid query: ' . mysql_error() . "\n"; 
    $message .= 'Whole query: ' . $query; 
    die($message); 
} 
+0

Я добавил истинный параметр для соединения с базой данных, как указано в ссылке, которую вы дал мне и добавил код проверки результата в скрипт. Сценарий все еще не работает, и ошибка проверки результатов: Неверный запрос: Не удается найти файл: './data_4/temp.frm' (errno: 2) Весь запрос: – Sammy