2009-08-27 24 views
4

我想將uuids作爲BINARY(16)存儲在數據庫中,但我需要接受它們並將它們顯示爲XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX格式。在我跳轉到在PHP代碼中分割guid之前(這真是太有趣了!),是否有任何庫或函數可以實現這種開箱即用的功能?PHP中的Guid/Uuid使用MySQL

+0

[此鏈接不錯](http://stackoverflow.com/questions/10950202/how-to-store-uuid-as-number) – nawfal 2012-06-27 23:52:56

回答

5

您可以先用​​ 刪除破折號,然後用Unhex()

執行HEX(str)的反操作。也就是說,它將參數中的每對十六進制數字解釋爲一個數字,並將其轉換爲數字所代表的字符。

+0

+1可能有一個庫,但這是一個簡單的任務,只是轉換它們。除非你生成它們,否則我只需要花費幾條額外的代碼來編寫你自己的函數。 – 2009-08-27 14:36:24

+0

這太容易了:) – 2009-08-27 14:52:45

0

難道你的意思是BINARY(36),而不是BINARY(16)

嘗試http://pecl.php.net/package/uuid

CakePHP有用於UUID的一些巧妙的功能和它CHAR(36)和BINARY自動工作(36)從我的理解。無論哪種方式,您都可以深入瞭解源代碼,看看它是否具有您所需要的。

編輯:這是一個獨立的類,可以生成和轉換成您可能需要的任何格式:http://www.shapeshifter.se/2008/09/29/uuid-generator-for-php/我在下面的評論中發佈了這個,但想確保鏈接對其他用戶很容易看到。

+0

不,我的意思是BINARY(16)。我想存儲底層的值,而不是擴展的字符表示。 – 2009-08-27 05:03:44

+0

好吧,我明白了。 PECL圖書館應該爲你做,但這可能會更好:http://www.shapeshifter.se/2008/09/29/uuid-generator-for-php/ 它不僅產生UUID,但也可以轉換爲不同的格式,包括BINARY(16) – 2009-08-27 05:39:15