[英]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.