2015-06-13 26 views
0

我想要得到lastInsertId()方法输出行号2为000002那样。我应该怎么做?如果是选择声明,我可以通过LPAD()得到它。但在这种情况下,它是如何完成的?用左填充获取lastInsertId PHP MYSQL

+1

要么在php中格式化,要么不要调用pdo wrapper,而是按照你想要的方式直接选择它 - 在mysql函数中必须始终插入返回值,pdo只是为了方便而隐藏。 [LAST_INSERT_ID手册](https://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_last-insert-id) – jkavalik

+0

那么我应该如何修改它与PHP – GRTZ

+1

使用str_pad上返回的值from lastInsertId() – jkavalik

回答

-1

如果你想从MySQL查询得到它,你可以参考下面的语句:

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

对不起,我没有问LPAD选择命令,我已经知道它 – GRTZ

+0

你可能会得到它从php中的mysql_insert_id()也可以参考:http://php.net/manual/en/function.mysql-insert-id.php –

+1

你也可以使用str_pad函数来为特定的字符串添加填充。 –

0

如果你仍然在你已经在执行的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个位数,但也将更长IDS工作。