我想从本地数据库更新远程数据库,我已经编写了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);
}
请参阅并建议任何可能的方法来执行此操作。
答案 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)
当你绝对不需要时,为什么要循环搜索结果(while($list=mysql_fetch_array($local_result))
)?
为什么要将错误功能设置为:trigger_error("SQL", E_USER_ERROR);
。
为什么你仍然使用mysql_*
方法进行数据库?
如果您只需要从另一个表中插入数据,只需输入:
mysql_query("INSERT INTO $tablename SELECT * FROM $tablename LIMIT 100 OFFSET $remoterows") or die(mysql_error());
并完成它。