从本地数据库表更新远程数据库表

时间:2012-09-16 06:55:38

标签: php mysql

我想从本地数据库更新远程数据库,我已经编写了PHP脚本来做到这一点,但它显示我致命的错误。

远程数据库和本地数据库具有相同的名称,相同的表,相同的字段。

我尝试过这种方式,但它不起作用。

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

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

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

请参阅并建议任何可能的方法来执行此操作。

4 个答案:

答案 0 :(得分:2)

"INSERT INTO $tablename SETLECT * from $tablename"

这是一个无效的SQL语句。 SETLECT必须是SELECT

答案 1 :(得分:2)

您的远程查询语法错误:"INSERT INTO $tablename SETLECT * from $tablename"。您的意思是SELECT而不是SETLECT

答案 2 :(得分:1)

替换码:

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

$local_query = "SELECT * FROM $tablename LIMIT 100 OFFSET $remoterows";
$local_result = mysql_query($local_query, $connection) or die(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 die (mysql_error());
}

你做错了什么,你输错了这句话:

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

请注意,您使用的是SETLECT,而不是您打算使用的(可能):SELECT

我也惊叹于检测输入错误需要多长时间。

我将所有错误处理程序更改为我在评论中提到的错误处理程序。将来使用它们。他们更好。

更新:您对代码做了什么?我刚刚意识到一些激烈的事情:

$remote_update=mysql_query("INSERT INTO $tablename SELECT * from $tablename");
$remote_update_result = mysql_query($remote_update, $remote_connection) or die (mysql_error());

首先,您在结果上运行mysql_query。其次,您没有插入任何INSERT INTO $tablename。这是我的错吗,还是你做了一件可怕的错事?

答案 3 :(得分:0)

  1. 当你绝对不需要时,为什么要循环搜索结果(while($list=mysql_fetch_array($local_result)) )?

  2. 为什么要将错误功能设置为:trigger_error("SQL", E_USER_ERROR);

  3. 为什么你仍然使用mysql_*方法进行数据库?

  4. 如果您只需要从另一个表中插入数据,只需输入:


  5. mysql_query("INSERT INTO $tablename SELECT * FROM $tablename LIMIT 100 OFFSET $remoterows") or die(mysql_error());
    

    并完成它。