使用左填充 PHP MYSQL 获取 lastInsertId

Posted

技术标签:

【中文标题】使用左填充 PHP MYSQL 获取 lastInsertId【英文标题】:Get lastInsertId with left padding PHP MYSQL 【发布时间】:2015-08-29 14:02:09 【问题描述】:

我想像这样将lastInsertId() 方法输出行号 2 设为 000002。我该怎么做?如果是 select 语句,我可以用LPAD() 得到它。但在这种情况下,它是如何完成的?

【问题讨论】:

要么用 php 格式化它,要么不调用 pdo 包装器,而是以你想要的方式直接选择它 - 在 mysql 函数返回值中必须始终插入,pdo 仅为了方便而隐藏它。 LAST_INSERT_ID manual 那我应该如何用PHP修改它 对从 lastInsertId() 返回的值使用 str_pad 对不起,“必须始终插入返回值” - 应该是“必须始终选择返回值”:( 【参考方案1】:

如果要从mysql查询中获取,可以参考以下语句:

SELECT
    LPAD(columnname, length(columnname),'00000')
FROM
    TABLENAME
ORDER BY 
    COLUMNNAME DESC LIMIT 1

【讨论】:

对不起,我没有询问关于 LPAD 的选择命令。我已经知道了 你可以从 php.ini 中的 mysql_insert_id() 得到它。另请参阅:php.net/manual/en/function.mysql-insert-id.php 您也可以使用 str_pad 函数为特定字符串添加填充。【参考方案2】:

如果您仍在执行INSERT 语句的同一 MySQL 会话中,则可以使用以下表达式计算格式化的最后插入 id:

LPAD(LAST_INSERT_ID(), GREATEST(6, LENGTH(LAST_INSERT_ID())), '0')

这将返回带有前导零的 id 值,默认总计为 6 位。它还会考虑 id 值是否超过 6 位(这就是 GREATEST(...) 所做的)。

您可以使用该表达式来选择格式化的最后一个 id,将其分配给 MySQL 变量:

SELECT LPAD(LAST_INSERT_ID(), GREATEST(6, LENGTH(LAST_INSERT_ID())), '0');
SET @myId = LPAD(LAST_INSERT_ID(), GREATEST(6, LENGTH(LAST_INSERT_ID())), '0');

您也可以在其他语句中使用它,但请注意,LAST_INSERTED_ID() 将在进一步的INSERT 语句之后发生变化。

你也可以在 PHP 中使用从 MySQL 返回的最后插入的 id 并在那里格式化:

$formattedId = sprintf('%06d', lastInsertId());

sprintf 默认将 id 扩展为 6 位数字,但也适用于更长的 id。

【讨论】:

以上是关于使用左填充 PHP MYSQL 获取 lastInsertId的主要内容,如果未能解决你的问题,请参考以下文章

使用 json rereiver php mysql 在片段中填充列表视图

从MySQL加载数据并使用jQuery Mobile,PHP选择填充下拉列表

强制 MySQL CHAR() 列要求所有数字或自动左填充零

使用 PHP 创建表并从 MySQL 填充

如何使用 Javascript 和 PHP 用 mysql 查询的输出填充列表

使用 AJAX、PHP 和 MySQL 链式填充 HTML 选择框