SQL Server使用PHP将列名截断为29个字符

inq*_*uam 2 php sql-server arrays

我有一个SQL Server查询,我从中获取结果并插入到数组中

while($ row = mssql_fetch_array($ res,MSSQL_ASSOC)){...}

现在,问题是$row看到我看到名为的列customer_social_sequrity_number成为关键 customer_social_sequrity_numbe.所有其他键似乎被加密到29个字符.这是一个限制吗?我找不到有关此限制的任何信息.

由于我从第三方数据库导入数据并使用数组的键将数据映射到对象,因此这有点拖累.

似乎没有如所述的PHP方面的限制.是否可能对SQL Server部分有一些限制?使用MS Query Analyzer它运行查询似乎很好.

inq*_*uam 6

我找到了问题的答案.在Windows中,似乎使用了Microsoft的DBLIB,并且返回列名的函数基于DBLIB中的dbcolname()函数.DBLIB最初是为SQL Server 6开发的,其中列名的最大长度为30.因此,最大列长度为30个字符.

在这里,你可以获得一个版本的FreeTDS for Windows,希望能够解决这个问题:http://docs.moodle.org/en/Installing_MSSQL_for_PHP#Using_FreeTDS_on_Windows

同样在Linux上,这不会是一个只影响Windows的问题