gpt4 book ai didi

php - Linux、FreeTDS 和 PHP 上的二进制 OID 获取不正确

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:47 26 4
gpt4 key购买 nike

我正在尝试让 linux、php 和 MSSQL 能够很好地协同工作。

我能够让它在大部分情况下工作 - 除了任何 OID(二进制)数据类型都以乱码 UTF-8 返回。例如:

字符串“�”Ή�%�'(长度=8)

我想要返回的是从 SQL Server 管理工具中进行选择时看到的十六进制值。例如:0x15C122CE89002595

详细信息:

服务器:CentOS 6.4

PHP版本:5.5.9

FreeTDS 版本:0.91RC2(2011 年 5 月 14 日)

我正在初始化与 php 函数 mssql_connect 的连接。然后,我使用 mssql_query 执行查询,然后使用 mssql_fetch_assoc 获取结果。我也用 PDO 尝试过,但没有成功。这让我觉得这是 FreeTDS 安装的问题?此外,我的同事在他的 Windows 计算机上安装的 SqlSrv 按预期返回了二进制 OID。

还有其他人遇到过 OID 未按预期返回的问题吗?

提前致谢。

最佳答案

您可以使用 unpack 将二进制转换为可读的十六进制字符串:

$bin = "\x15\xC1\x22\xCE\x89\x00\x25\x95";
$str = unpack('H*', $bin);
var_dump($str[1]); // string(16) "15c122ce89002595"

您当前的代码“不起作用”,因为 var_dump 不知道您想要的数据格式(它只涉及格式,没有其他内容)和按原样输出字节。

关于php - Linux、FreeTDS 和 PHP 上的二进制 OID 获取不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22056437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com