我正在尝试创建一个单独的搜索站点(使用site4使用database4),它每小时从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个数据库都有相同的结构,因为每个数据库只有一个表,有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>';
?>发布于 2013-06-19 18:53:08
您可以创建到数据库的4个不同的连接,但是mysql_query将针对一个连接运行。
查询将需要知道要连接到哪个数据库。一个很好的例子可以看到How do you connect to multiple MySQL databases on a single webpage?
通过显示错误,您应该能够看到create查询失败:
// 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);
}https://stackoverflow.com/questions/17198989
复制相似问题