PHP中查詢SQL Server或Sybase時TEXT字段被截斷的解決方法
更新時間:2009年03月10日 21:11:05 作者:
在CSDN的PHP版里老是看到有人問TEXT字段被截斷的問題,偶也回答了無數(shù)次,今天索性就總結(jié)一下吧
Author: Wenlong Wu
一、針對MS SQL SERVER數(shù)據(jù)庫
有兩種解決方案,如下:
修改php.ini來實現(xiàn): 打開php.ini,可看到mssql.textsize,mssql.textlimit兩個選項:
; Valid range 0 - 2147483647. Default = 4096.
;mssql.textlimit = 4096
; Valid range 0 - 2147483647. Default = 4096.
;mssql.textsize = 4096
可以看到默認(rèn)配置為4096字節(jié),也就是經(jīng)常碰到的被截斷為4K,將之改為合適的大小,去掉前面的分號,然后保存并重起WEB服務(wù)器即可。
從上面兩個選項可看到范圍為:0 - 2147483647字節(jié),其實-1也可以的,查看一下PHP源代碼即可發(fā)現(xiàn)-1表示無限制 :)
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, "SET TEXTSIZE %li", MS_SQL_G(textsize));
dbcmd(mssql.link, buffer);
dbsqlexec(mssql.link);
dbresults(mssql.link);
}
在PHP中查詢之前執(zhí)行SET TEXTSIZE 合適的大?。?只需在SELECT之前執(zhí)行
mssql_query("SET TEXTSIZE 65536");
從上面PHP源代碼中可看到其實也是執(zhí)行SET TEXTSIZE的 :)
二、針對Sybase數(shù)據(jù)庫
由于該擴(kuò)展在php.ini沒有像SQL SERVER那樣的選項可配置,所以只有采用上面的第二種方法,即:
在SELECT之前執(zhí)行
sybase_query("SET TEXTSIZE 65536");
一、針對MS SQL SERVER數(shù)據(jù)庫
有兩種解決方案,如下:
修改php.ini來實現(xiàn): 打開php.ini,可看到mssql.textsize,mssql.textlimit兩個選項:
; Valid range 0 - 2147483647. Default = 4096.
;mssql.textlimit = 4096
; Valid range 0 - 2147483647. Default = 4096.
;mssql.textsize = 4096
可以看到默認(rèn)配置為4096字節(jié),也就是經(jīng)常碰到的被截斷為4K,將之改為合適的大小,去掉前面的分號,然后保存并重起WEB服務(wù)器即可。
從上面兩個選項可看到范圍為:0 - 2147483647字節(jié),其實-1也可以的,查看一下PHP源代碼即可發(fā)現(xiàn)-1表示無限制 :)
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, "SET TEXTSIZE %li", MS_SQL_G(textsize));
dbcmd(mssql.link, buffer);
dbsqlexec(mssql.link);
dbresults(mssql.link);
}
在PHP中查詢之前執(zhí)行SET TEXTSIZE 合適的大?。?只需在SELECT之前執(zhí)行
mssql_query("SET TEXTSIZE 65536");
從上面PHP源代碼中可看到其實也是執(zhí)行SET TEXTSIZE的 :)
二、針對Sybase數(shù)據(jù)庫
由于該擴(kuò)展在php.ini沒有像SQL SERVER那樣的選項可配置,所以只有采用上面的第二種方法,即:
在SELECT之前執(zhí)行
sybase_query("SET TEXTSIZE 65536");
相關(guān)文章
php 快速判斷一個數(shù)字屬于什么范圍的實現(xiàn)方法
這篇文章主要介紹了php 快速判斷一個數(shù)字屬于什么范圍的實現(xiàn)方法,需要的朋友可以參考下2018-07-07php字符串函數(shù)學(xué)習(xí)之strstr()
這篇文章主要介紹了php字符串函數(shù)學(xué)習(xí)之strstr(),本文講解了它的定義和用法、參數(shù)描述、提示和注釋以及多個使用示例,需要的朋友可以參考下2015-03-03