将新行从本地表插入到远程表

时间:2012-09-16 09:45:59

标签: php mysql

我想将本地表中的新行插入到远程表中,我已经为它创建了一个php脚本,但它无效。

远程和本地 - 数据库,表和字段相同。

我这样做

//connection
$remote_hostname='xxx.xxx.xxx.xxx:3306';
$hostname='localhost';
$username = 'username';
$password = 'password';
$remote_connection = mysql_connect($remote_hostname, $username, $password); 
$connection = mysql_connect($hostname, $username, $password); 

$tablename="pc_games";
$database = 'games';

// some row count here $remoterows

$local_query = "SELECT * FROM $tablename LIMIT 100 OFFSET $remoterows";
$local_result = mysql_query($local_query, $connection) or trigger_error(mysql_error()); 

while($list=mysql_fetch_array($local_result))
{
$remote_update=mysql_query("INSERT INTO $tablename SELECT * from $tablename");
$remote_update_result = mysql_query($remote_update, $remote_connection) or trigger_error(mysql_error());    
}

这不起作用并显示错误Duplicate entry '1' for key 'PRIMARY',但没有重复的条目。

如果我按照这种方式工作,新行将被插入到远程数据库中。

while($list=mysql_fetch_array($local_result))
{
$id=$list['id'];    
$pflink=$list['pflink'];    
$image=$list['image'];  
$pagelink=$list['pagelink'];    
$title=$list['title'];
    // and so on... 

$remote_update=mysql_query("INSERT INTO $tablename SET id='$id', image='$image', pagelink='$pagelink', title='$title'......");
$remote_update_result = mysql_query($remote_update, $remote_connection) or trigger_error(mysql_error());    
}

我在数据库和许多数据库中有很多列,我想以第一种方式进行,因为我想将这些代码重新用于另一个数据库而只需更改$database$tablename 在另一个数据库的require文件中。

请参阅并建议任何可行的方法。

1 个答案:

答案 0 :(得分:2)

您无法在一个请求中跨越本地和远程查询:

$remote_update=mysql_query("INSERT INTO $tablename SELECT * from $tablename");

这应该从本地选择插入中获取数据到远程数据库

查询在1个数据库上运行,仅在1个数据库上运行。您正在尝试从表中获取数据并将其插入到同一个表中。当然,这会给出Duplicate entry '1' for key 'PRIMARY'