Проблема с расширением ODBC PHP PDO при обновлении PHP 5.6 до 7.1 - PullRequest
0 голосов
/ 24 сентября 2018

У нас есть настройка с PHP 5.6.Мы используем Apache Ignite datagrid для целей кэширования.Мы используем PDO (pdo_odbc) поверх unixODBC для выполнения SQL-запросов к кешу зажигания.Код приведен ниже:

$res = $this->connection()->query($selectQuery)->fetchAll(\PDO::FETCH_COLUMN);

Здесь функция connection() возвращает объект PDO.SQL имеет следующий формат:

SELECT stu.name FROM "StudentCache".Student AS stu WHERE stu.is_qualified = \'1\' ORDER BY name ASC LIMIT 40 OFFSET 0

Код работает нормально при развертывании PHP 5.6.Код возвращает массив значений столбца.По умолчанию FETCH_COLUMN возвращает первый столбец (в нашем случае только один).

Проблема

Теперь проблема в том, что когда я обновил php до 7.1,тот же кусок кода вызывает исключение pdo.Ниже приведена точная ошибка:

SQLSTATE[SL009]: <<Unknown error>>: 0 [unixODBC][Driver Manager]No columns were bound prior to calling SQLFetch or SQLFetchScroll (SQLFetchScroll[0] at /home/buildozer/aports/community/php7/src/php-7.1.17/ext/pdo_odbc/odbc_stmt.c:559)

Но если имя столбца заменить на *, ошибки не будет.Весь набор результатов возвращается в виде массива.Однако для нашего варианта использования мы хотим иметь возможность указать столбец, так как при разборе результирующего набора нет ненужных накладных расходов.

Я искал похожие проблемы без особого успеха.Любая помощь будет принята с благодарностью.Пожалуйста, спросите, если вам нужно больше деталей.

...