我们使用PHP 5.6进行了设置。我们将Apache Ignite数据网格用于缓存。我们在unixODBC上使用PDO(pdo_odbc)在点火缓存上执行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)
但是,如果将列名替换为*
,则不会出现错误。整个结果集以数组形式返回。但是,对于我们的用例,我们希望能够指定列,因为解析结果集是不必要的开销。
我一直在寻找类似的问题,但没有成功。任何帮助将不胜感激。请询问是否需要更多详细信息。