2011-01-11 51 views
2

我有我需要的结果的,并插入到像SQL Server返回列名截断使用PHP

而($行= mssql_fetch_array数组($ RES一个SQL Server查询29个字符, MSSQL_ASSOC )){...}现在

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

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

似乎并没有像所述的那样对PHP端进行限制。它可能是SQL Server部分的一些限制吗?使用MS Query Analyzer运行查询似乎很好。

回答

5

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

在这里你可以得到一个版本的freetds的为Windows有希望eliviates这个问题:http://docs.moodle.org/en/Installing_MSSQL_for_PHP#Using_FreeTDS_on_Windows

也可以在Linux这不会是它仅影响Windows中的一个问题

-1
  1. 确保您的数据库中列definetly称为customer_social_sequrity_number,不切断
  2. 检查这是定义的关键,而不是数组的价值,如果它的价值那么它的数据,而不是列名
+0

查询包含`C.ED1 AS customer_social_sequrity_number `,非常确定。是的,这是关键。 – inquam 2011-01-11 14:27:18