来自 Sql 服务器标量函数的“计算”键


"Computed" key from Sql server scalar functions

我有一个使用 MSSQL 而不是 pdo_dblib 和 freetds 的项目。MS 标量函数始终以以下格式返回其数据:

array(1) { [0]=> array(1) { ["computed"]=> string(3) "922" } }.

但是现在,在其中一台服务器上,格式突然变成了:

array(1) { [0]=> array(1) { [""]=> string(3) "922" } }.

因此,数组中的键变为空,而不是"计算"。

我知道我可以通过添加"as"子句来更改我的选择语句中的键。不过,问题是,什么控制着默认密钥?

两台服务器使用相同的数据库。

据我所知,这个"计算"键是pdo_dblib添加的东西。

PHP 版本在服务器之间是不同的,带有计算的服务器具有旧的 5.3,而具有空键的服务器具有 5.5。但我认为这台服务器有 5.5 已经有一段时间了,而计算的密钥就在昨天消失了。虽然不是100%确定...

最后我发现发生这种情况是因为这个提交到pdo_dblib发生了变化。这种变化的动机是它堵塞了内存。

应该注意的是,您从pecl获得的版本很奇怪。它已经在dblib_stmt.c源代码中"计算",但仍然不使用它。

有效的版本是与 php 源代码捆绑在一起的版本。我能够从 php-5.3.29''ext''pdo_dblib'' 获取源代码,并针对 5.6.4 构建它们。