【问题标题】:PHP MySQLi insert get last column value add 1PHP MySQLi插入获取最后一列值加1
【发布时间】:2015-03-31 18:06:04
【问题描述】:

我正在尝试对具有 3 列的表运行 INSERT 查询。第一列是我遇到问题的地方。

调用COMM_CODE,VARCHAR值为10长度,为主键,不勾选ALLOW NULL。

COMM_CODE 的值如下所示:

 COMM_CODE
 c20188
 c20189
 c20190
 // and so on

我想做的是在插入新记录时,基本上将最近的记录加1。

因此,最近的记录是:

 c20190

所以当我添加一条新记录时,新记录的 COMM_CODE 将是:

 c20191

我试过了:

 INSERT INTO table_c 
   (COMM_CODE, COMM_DESC, DATE) 
 VALUES 
   (''+1, 'VIDEO GAMES', NOW());

但这只是在该列中添加了一个数字 1。

我怎样才能做到这一点?

【问题讨论】:

  • 你想如何给一个字符串加1?
  • 这就是我想要弄清楚的。我需要能够获得最新的 COMM_CODE,然后添加到它。这甚至可能吗?

标签: php mysql mysqli insert


【解决方案1】:

这里是您查询的解决方案: 为了生成新代码,我在 mysql 中创建了 get_new_code 函数。我希望你知道函数在 mysql 中是如何工作的。

CREATE FUNCTION `get_new_code`() RETURNS varchar(11)
BEGIN 
    Declare var_code VARCHAR(11);
    SELECT max(`COMM_CODE`) INTO var_code FROM table_c;
    RETURN (CONCAT('c',(convert(substr(var_code,2,length(var_code)), SIGNED INTEGER)+1)));
END

只是为了验证您可以使用的逻辑:

select get_new_code();

这样你就会得到清晰的画面。 像这样在插入查询中调用这个 get_new_code 函数:

INSERT INTO 
`table_c`(`COMM_CODE`, `COMM_DESC`, `COMM_DATE`) 
VALUES 
(get_new_code(),'Description text',NOW());

这应该可以解决您的问题。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-13
    • 2011-09-23
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2023-03-16
    • 2011-04-30
    • 1970-01-01
    相关资源
    最近更新 更多