0

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