2015-06-13 50 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工作。