1

ローカル テーブルからリモート テーブルに新しい行を挿入したいのですが、そのための 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 .

それを行う可能な方法を見て、提案してください。

4

1 に答える 1

2

1 つのリクエストでローカル クエリとリモート クエリをまたがることはできません。

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

これは、ローカルの選択からデータを取得し、それをリモート データベース挿入することになっていますか?

クエリは 1 つのデータベースで動作し、1 つのデータベースのみで動作します。テーブルからデータをフェッチし、同じテーブルに挿入しようとしています。そしてもちろん、これはDuplicate entry '1' for key 'PRIMARY'

于 2012-09-16T10:26:34.663 に答える