2009-05-22 103 views
1

我發現結果從我的SQL Server即將擁有的是字段名截斷:PHP和SQL服務器 - 字段名截斷

$query = "SELECT some_really_really_long_field_name FROM ..." 
... 
print_r($row); 

array(
    'some_really_really_long_field_n' => 'value' 
) 

有誰知道如何避免這種行爲?

我認爲數據庫驅動程序是ADODB。

因此,您不必計數:字段名稱被截斷爲31個字符。

SQL Server似乎並不介意長字段名稱本身,所以我只能假定ADODB驅動程序中的某個char [32]字符串緩衝區不能包含長名稱。爲了避免被截斷的字段名稱

回答

5

您可能正在使用十年前不推薦使用的捆綁MSSQL客戶端。使用new MSSQL driver for PHP from Microsoft或從MSSQL服務器CD安裝MSSQL客戶端工具。

+2

」返回列名稱的函數基於DBLIB中的dbcolname()函數。DBLIB是爲最大標識符長度爲30的SQL Server 6.x開發的。因此,最大列長度爲30個字符。 「 – TML 2009-05-22 05:24:10

1

最簡單的方法是使用較短的字段名稱....

對不起,這聽起來像一個蹩腳的答案,但它是更清潔,更容易閱讀和維護,只是更好的做法。

2

,你可以使用你的長字段名稱的別名,像這樣:

$query = "SELECT some_really_really_long_field_name AS short_alias FROM ..." 

這會爲您的當前問題的工作。但我建議使用PDO MSSQL驅動程序連接到數據庫。 「