PHP7 PDO_DBLIB唯一标识符
我目前正在项目中使用PHP7 PDO_DBLIB唯一标识符,php,sql-server,pdo,uniqueidentifier,Php,Sql Server,Pdo,Uniqueidentifier,我目前正在项目中使用pdo_dblib扩展。 当我在PHP5.6下使用它,并在config.中设置FreeTDS Version 7.0时,它会给我一个唯一的标识符作为字符串。 当我在PHP7.0.8下使用相同的脚本时,它只会给我一些乱七八糟的东西。 我不想在SQL中强制转换它,也不想以后在PHP中转换它。因为有时它可以是结果中的唯一标识符,有时则不是。所以我需要通过完整的结果来转换uniqueidentifier 那么,有没有什么解决方案可以像在PHP5.6下一样使用PHP7.0.8呢?看起来
pdo_dblib
扩展。
当我在PHP5.6
下使用它,并在config.
中设置FreeTDS Version 7.0
时,它会给我一个唯一的标识符作为字符串。
当我在PHP7.0.8
下使用相同的脚本时,它只会给我一些乱七八糟的东西。
我不想在SQL
中强制转换它,也不想以后在PHP
中转换它。因为有时它可以是结果中的唯一标识符,有时则不是。所以我需要通过完整的结果来转换uniqueidentifier
那么,有没有什么解决方案可以像在PHP5.6
下一样使用PHP7.0.8
呢?看起来这个bug是在PHP7的一些小版本中引入的
- 7.0.4可以完美地工作。您可以使用phpbrew手动编译它
- 7.0.8此实现目前已中断
此处已针对此问题提交了错误报告:
以及对潜在修复的拉取请求:
将以下标志添加到\PDO实例
/** @var \PDO $pdo */
$pdo->setAttribute(\PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER, true);
正如Bojan回答中提到的pull请求中所解释的,PHP7中出现此问题的原因是您必须指示PDO将GUI从二进制转换为字符串
这应该适用于任何挣扎于此的人
/** @var \PDO $pdo */
$pdo->setAttribute(\PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER, true);
你的剧本是什么?真的很有意思。非常感谢你指出这一点。我需要在哪里添加这个?