使用左填充 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() 列要求所有数字或自动左填充零