0

データベースにいくつかの値を挿入しようとしています。挿入する必要がある値の 1 つは次のとおりです。MAX(FixedFareID)+1

次のように:

public function fixed($fieldDay) {

    $pdo = new SQL();
    $dbh = $pdo->connect(Database::$serverIP, Database::$serverPort, Database::$dbName, Database::$user, Database::$pass);

    $this->sql = "INSERT INTO tblfixedfare VALUES (NULL, MAX(FixedFareID)+1, '1', '$fieldDay')";

明らかに、これは機能しませんが、データベースに MAX(FixedFareID)+1 の値を挿入する方法がわかりません。

どんな助けでも大歓迎です。

4

5 に答える 5

3
INSERT INTO tblfixedfare 
select NULL, MAX(FixedFareID)+1, '1', '$fieldDay' from tblfixedfare 
于 2012-10-12T11:32:43.300 に答える
1

これを行う最善の方法は、auto_increment列を使用するか (構文は SQL エンジンによって異なります)、またはシーケンスを使用することです。

于 2012-10-12T11:32:34.700 に答える
0

サブクエリを使用します。

$this->sql = 
  "INSERT INTO tblfixedfare 
  VALUES (NULL, (SELECT MAX(FixedFareID)+1 FROM tblfixedfare), '1', '$fieldDay'";
于 2012-10-12T11:32:52.737 に答える
0

それは間違っている。あなたのサブセレクトが必要ですMAX()

(SELECT MAX(FixedFareID)+1 FROM tblfixedfare)

または、より優れた高速な機能FixedFareIDを使用するように切り替えますauto increment

于 2012-10-12T11:33:05.327 に答える
0

自動インクリメント フィールドがない場合は、次のようなものを使用できます。

INSERT INTO tblfixedfare 
SELECT NULL, MAX(FixedFareID)+1, '1', '$fieldDay'
FROM tblfixedfare

したがって、コードは次のようになります。

public function fixed($fieldDay) {

    $pdo = new SQL();
    $dbh = $pdo->connect(Database::$serverIP, Database::$serverPort, Database::$dbName, Database::$user, Database::$pass);

    $this->sql = "INSERT INTO tblfixedfare SELECT NULL, MAX(FixedFareID)+1, '1', '$fieldDay' FROM tblfixedfare";
于 2012-10-12T11:33:07.147 に答える