我收到以下错误:列计数与此查询的第1行的值计数不匹配:
$movetohistory = mysql_query("INSERT INTO $storehistory SELECT * FROM $storetbl WHERE $time - datecreated >= 432000") or die ("Query failed: " . mysql_error() . " Actual query: " . $query);
我已经回应了$ storehistory,$ storetbl,$ time&一切都很好。两个表都具有相同的列/数据类型。我唯一可以假设的是,由于$ storetbl没有填写所有字段,因此会出现列计数错误。但是,我认为指定SELECT * ALL会超过它。
如果你能指出我正确的方向,我会很感激。如果您需要更多代码段,请告诉我。
感谢。
答案 0 :(得分:2)
因为您的子查询返回的列数多于可插入的列数:
INSERT INTO $storehistory SELECT * FROM $storetbl WHERE $time - datecreated >= 432000"
为清楚起见,您应该为子查询加上括号:
INSERT INTO $storehistory (SELECT * FROM $storetbl WHERE $time - datecreated >= 432000)"
编辑:
我刚刚执行了这个查询,它与两个相同的表完美配合:
insert into users_copy select * from users
我会仔细检查您的数据结构是否相同。
答案 1 :(得分:0)
面对数据库更改,这种代码很难维护。
我建议您在INSERT和SELECT部分中明确列出该列。例如,可以更改生产中的表的列顺序,或添加或删除列。