简体   繁体   English

插入数据库MAX(field)+1

[英]Insert into database MAX(field)+1

I am trying to insert some values into a database, one of the values that I need to insert is;- MAX(FixedFareID)+1 我正在尝试将一些值插入数据库中,我需要插入的值之一是; MAX(FixedFareID)+1

As follows: 如下:

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

Obviously, as it is this will not work, but I am unsure how I could insert the MAX(FixedFareID)+1 value into the database. 显然,这是行不通的,但是我不确定如何将MAX(FixedFareID)+1值插​​入数据库。

Any help would be much appreciated. 任何帮助将非常感激。

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

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

Use a sub query: 使用子查询:

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

You are doing it wrong. 你做错了。 You need a sub-select for your MAX() : 您需要为MAX()进行子选择:

(SELECT MAX(FixedFareID)+1 FROM tblfixedfare)

or, which may be a better and faster, switch your FixedFareID to use auto increment feature. 或者,可能会更好更快,将您的FixedFareID切换为使用auto increment功能。

If you do not have an auto increment field then you can use something like this: 如果您没有自动递增字段,则可以使用以下内容:

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

So your code would be: 因此您的代码将是:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM