首頁  >  文章  >  後端開發  >  MSSQL資料庫中Text類型欄位在PHP中被截斷之解

MSSQL資料庫中Text類型欄位在PHP中被截斷之解

巴扎黑
巴扎黑原創
2016-11-10 10:07:401401瀏覽

在PHP中使用了MSSQL資料庫,在恰巧資料庫中又使用了Text類型字段,於是問題產生了。每次從資料庫中查詢得到的資料總是被莫名的截斷,一開始是以為我使用的PHP框架中對字串的長度有所限制,後來發現這是個較愚蠢的想法,因為在提交資料時可以將字串內容全部的提交到資料庫中,只是讀取時發生此現象,於是上網搜尋是否有類似的問題。運氣還挺不錯,第一次搜尋就找到了解決的辦法,遂決定將其轉貼在我的Blog中,供自己和廣大PHP愛好者的不時之需。
有兩種解,如下: 
一、修改php.ini來實現:
打開php.ini,可看到mssql.textsize,mssql.textlimit兩個選項:
; Valid range 0 - 2147483647. Default = 4096 .
;mssql.textlimit = 4096

; Valid range 0 - 2147483647. Default = 4096.
;mssql.textsize = 4096

可以看到
;mssql.textsize = 4096

可以看到

;mssql.textsize = 4096

可以看到這個配置為4096字節,也就是默認,將之改為適當的大小,去掉前面的分號,然後儲存並重起WEB伺服器即可。

從上面兩個選項可看到範圍為:0 - 2147483647位元組。

if(MS_SQL_G(textlimit)!=-1){
sprintf(buffer,"%li",MS_SQL_G(textlimit));
if(DBSETOPT(mssql.link,DBTEXTLIMIT,buffer)==FAIL){
efree(hashed_details);
dbfreelogin(mssql.login);
RETURN_FALSE;
}
}
if(MS_SQL_G(textsize)!=-1){
sprintf(buffer,"SETTEXTSIZE%li",MS_SQL_G(textsize));
dbcmd(mssql.link,buffer);
dbsqlexec(mssql.link);
dbresults(mssql.link);
}

二、在PHP中執行SELECT查詢之前執行SET TEXTSIZE:

mssql_query("SETTEXTSIZE65536");

從上面PHP源代碼中可看到其實也是執行SET TEXTSIZE的。 🎜🎜如果以上不起作用,可以嘗試在查詢語句中使用CAST函數。 🎜🎜🎜🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn