在PHP中编码和解码二进制guid

时间:2012-02-29 21:57:39

标签: c# php mysql

我有一个使用ADO.NET Driver for MySQL(Connector / NET)的C#.NET 3.5应用程序。它将Guid.NewGuid()作为BINARY(16)存储在MySQL数据库中。

我有另一个使用PHP 5.3.4的应用程序需要能够将该二进制值读取为GUID字符串,并使用相同的16字节二进制值对GUID字符串进行编码。

作为一个例子,我希望能够在这两件事之间进行转换:

GUID string: E241346C-504F-4BE5-BDF3-1B8274815597
BINARY(16): 65 32 34 31 33 34 36 63 2d 35 30 34 66 2d 34 62

我如何在PHP中执行此操作?

1 个答案:

答案 0 :(得分:0)

问题是该字段是BINARY(16),但My SQL连接器试图在其中存储CHAR(36)。 (他们改变了在v6.1.1中格式化GUID的方式) 因此,我的GUID的最后20个字节被静默截断。 (我不知道为什么连接器没有抛出异常。)

一旦我将数据库更改为将GUID存储为CHAR(36),它就可以正常工作。或者,我可以在连接字符串中使用oldguids=true元素。