2012-10-12 75 views
0

我想一些值插入到數據庫中,我需要插入值之一; - MAX(FixedFareID)+1插入到數據庫MAX(場)+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值插​​入數據庫。

任何幫助將不勝感激。

+0

你能不能創建一個標識列?你使用的是什麼版本的SQL? MySQL的?如果是這樣的話:http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html – Charleh

+0

我使用的MySQL,ID列是自動增量,FixedFareID不是唯一的,所以我可以' t使用這個 – nsilva

回答

3
INSERT INTO tblfixedfare 
select NULL, MAX(FixedFareID)+1, '1', '$fieldDay' from tblfixedfare 
1

最好的方法是使用auto_increment列(語法取決於你的SQL引擎)或使用序列。

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

我會用這個,但我已經使用這個ID列,FixedFareID是不唯一的,它總是1或2 – nsilva

+2

然後你的查詢將插入3到數據庫是不是?因此,違反該規則... MAX會給你'2',加1和3' – Charleh

+0

對不起,我輸入錯了,我會做兩個插入,這兩個插入fixedfareid將是相同 – nsilva

0

使用子查詢。你需要一個子選擇您MAX()

(SELECT MAX(FixedFareID)+1 FROM tblfixedfare) 

或者,這可能是一個更好,更快,切換您FixedFareID使用auto increment功能。

0

你做錯了:

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";