列计数错误

时间:2009-06-22 09:19:36

标签: php mysql

我收到以下错误:列计数与此查询的第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会超过它。

如果你能指出我正确的方向,我会很感激。如果您需要更多代码段,请告诉我。

感谢。

2 个答案:

答案 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部分​​中明确列出该列。例如,可以更改生产中的表的列顺序,或添加或删除列。