【发布时间】:2012-11-28 14:38:46
【问题描述】:
可能重复:
Moving a row from one table to another (Insert value list does not match column list)
对于我的插入之一,我有以下内容:(PDO / MySQL)
$this->sql = "INSERT INTO tblfixedfares NULL, SELECT NULL, IFNULL(MAX(FixedFareId), 0) + 1, '$fieldFrompc', '$fieldTopc', '$fieldDay', '1', 'Car') FROM tblfixedfares;
INSERT INTO tblfixedfares NULL, SELECT NULL, IFNULL(MAX(FixedFareId), 0) + 1, '$fieldFrompc', '$fieldTopc', '$fieldNight', '2', 'Car') FROM tblfixedfares;";
基本上,这不起作用,因为它没有为FixedFareId 插入值。
我要做的是将FixedFareId设置为大于最高固定票价id值的1,如果为null则将FixedFareId设置为1。
不确定代码到底有什么问题,但我可以看到它没有为 FixedFareId 提取任何东西,因为我得到以下响应:
Error: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1SQL
INSERT INTO tblfixedfares VALUES (NULL, 'le675', 'le115', '11', '1', 'Car');
INSERT INTO tblfixedfares VALUES (NULL, 'le675', 'le115', '22', '2', 'Car');
基本上两个插入发生在一个查询中,如果数据库中没有任何内容,FixedFareId 需要为 1:
所以第一个插入需要是:
INSERT INTO tblfixedfares VALUES (NULL, **1**, 'le675', 'le115', '11', '1', 'Car');
INSERT INTO tblfixedfares VALUES (NULL, **1**, 'le675', 'le115', '22', '2', 'Car');
下一个插入是:
INSERT INTO tblfixedfares VALUES (NULL, **2**, 'le675', 'le115', '11', '1', 'Car');
INSERT INTO tblfixedfares VALUES (NULL, **2**, 'le675', 'le115', '22', '2', 'Car');
数据库如下:
id, FixedFareId, ShortPostcodeA, ShortPostcodeB, Fare, DayHalf, VehicleSystemId
id为自增,fixedfareid若为null则为1,不为null则为fixedfareid最大值+1。
【问题讨论】:
-
你能发布这个查询的结果吗,
DESC tblfixedfares?