【问题标题】:encoding and decoding a binary guid in PHP在 PHP 中编码和解码二进制 guid
【发布时间】:2012-03-19 10:08:29
【问题描述】:

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

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

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

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 中做到这一点?

【问题讨论】:

  • 尝试使用unpack函数
  • String to byte array in php 的可能重复项 - 在那里查看 karim79 建议。
  • unpack 让我得到字符串中 guid 的二进制表示,但与 guid 字符串不同。
  • @alexi Levenkov - karim79 的建议没有产生我正在寻找的结果

标签: c# php mysql


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 2021-06-11
    • 2017-07-11
    • 2020-12-10
    • 1970-01-01
    • 2011-11-02
    • 2018-07-21
    相关资源
    最近更新 更多