2016-07-23 5 views
1

В настоящее время я использую расширение pdo_dblib в своем проекте. Когда я использую это под PHP 5.6 с FreeTDS Version 7.0, установленным в config. Он даст мне уникальный идентификатор как string. Когда я использую тот же скрипт под PHP 7.0.8, он просто выдает мне какое-то искаженное дерьмо. Я не хочу делать это в SQL или конвертировать его позже в PHP. Потому что иногда это может быть уникальным идентификатором в результате, а иногда и нет. поэтому мне нужно будет пройти через полные результаты для преобразования uniqueidentifier.PHP7 PDO_DBLIB uniqueidentifier

У вас есть решение для работы с PHP 7.0.8, как будто это было под PHP 5.6?

+0

Какой у вас сценарий? –

ответ

0

Похоже, что ошибка возникла в некоторых незначительных версиях PHP7.

  • 7.0.4 работает отлично. Вы можете вручную скомпилировать его с помощью phpbrew.
  • 7.0.8 В настоящее время эта реализация нарушена.

Был уже отчет об ошибке подала эту проблему здесь: https://bugs.php.net/bug.php?id=72601

и запрос тягового для потенциального исправления: https://github.com/php/php-src/pull/2001

2

Как объяснен в запросе тягового упомянутом в ответе Бояна, тем причиной этой проблемы в PHP 7 является то, что вы должны указать PDO для преобразования GUID из двоичного кода в строку.

Это должно сделать это для тех, кто борется с этим.

/** @var \PDO $pdo */ 
    $pdo->setAttribute(\PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER, true); 
+0

Это действительно трюк. Большое спасибо за указание на это. – user2432612

 Смежные вопросы

  • Нет связанных вопросов^_^