Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP7 PDO_DBLIB唯一标识符_Php_Sql Server_Pdo_Uniqueidentifier - Fatal编程技术网

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);

你的剧本是什么?真的很有意思。非常感谢你指出这一点。我需要在哪里添加这个?