簡體   English   中英

如何將3個數據庫表組合成3個不同的數據庫到Database 4中

[英]How to Combine 3 database tables form 3 different databases into Database 4

我正在嘗試創建一個單獨的搜索網站( 使用database4的site4 ),該網站每小時從3個不同的網站進行更新, 每個網站都有自己的數據庫。 我想將來自database1,database2和database3的數據合並到database4中。

我還想在合並過程中刪除重復項,因此被告知要使用MySQL 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>';

?>

您創建了4個與數據庫的不同連接,但是mysql_query將針對一個連接運行。

查詢將需要知道要連接到哪個數據庫。 您可以看到如何在一個網頁上連接到多個MySQL數據庫? 舉個好例子

通過顯示錯誤,您應該能夠看到您的創建表查詢失敗:

// 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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM