PHP 可以使用很多數據庫系統, 最經常用的是MySQL. 然而, SQL Server 是一個非常強大的,可以替換MySQL 的數據庫, 很值得我們在大的項目中考慮使用。
然而, 在PHP中 mssql 的擴展設置很容易被忽略,所以會導致一些奇怪的行爲。 我在最近的一個項目中遇到這樣一個不常見的問題, 每次從Text 類型的列中獲取數據,都會被截斷爲大約4000個字符
如果你也正經歷這樣類似的問題, 這裏有一些方法可以解決它。
你需要通過PHP增加text 類型列從數據庫的最大返回值。 你可以用這樣一個簡單的sql 查詢
SET TEXTSIZE 2147483647
你可以運行下面的php 腳本(最好是在建立連接後執行)
mssql_query("SET TEXTSIZE 2147483647");
一個比較好的解決這個問題方式是在php.ini 中修改 “textlimit” 和 “textsize” , 像這樣
mssql.textlimit = 2147483647
mssql.textsize = 2147483647
在上面的例子中, 我用了數值 "2147483647" (字節數), 你是沒有必要設置這麼高的, 然而這樣做也是沒有傷害的。
爲什麼這個問題不會發生在ASP ? 當我們使用Microsoft's SQL Server ODBC driver and OLE DB Provider 時, 當連接建立成功後,textsize 自動被設置成了 2147483647。
原文: https://www.addedbytes.com/blog/sql-server-php-truncating-text