1

我想从本地数据库更新远程数据库,我已经编写了 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

4 回答 4

1
"INSERT INTO $tablename SETLECT * from $tablename"

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

于 2012-09-16T07:03:59.017 回答
1

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

于 2012-09-16T07:04:44.057 回答
0

替换代码:

$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。是我的错,还是你做错了什么?

于 2012-09-16T07:05:26.920 回答
0
  1. while($list=mysql_fetch_array($local_result)) 当您绝对不需要时,为什么要遍历结果(使用)?

  2. 为什么到处都将错误函数设置为:trigger_error("SQL", E_USER_ERROR);.

  3. 为什么您仍在使用mysql_*数据库方法?

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


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

并完成它。

于 2012-09-16T07:11:23.963 回答