插入数据库MAX(字段)+1

时间:2012-10-12 11:30:58

标签: php sql

我正在尝试将一些值插入数据库,我需要插入的值之一是: - 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值插​​入数据库。

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

最好的方法是使用auto_increment列(语法取决于您的SQL引擎)或使用序列。

答案 2 :(得分:0)

使用子查询:

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

答案 3 :(得分:0)

你做错了。您需要为MAX()

进行子选择
(SELECT MAX(FixedFareID)+1 FROM tblfixedfare)

或者可能更好更快,将FixedFareID切换为使用auto increment功能。

答案 4 :(得分: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";