私の挿入物の1つには、次のものがあります:(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である必要があり、1つのクエリで2つの挿入が発生します。
したがって、最初の挿入は次のようにする必要があります。
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である必要があります。