PHP中查詢SQL Server或Sybase時TEXT欄位被截斷的解決方案

來源:互聯網
上載者:User

Author: Wenlong Wu
一、針對MS SQL SERVER資料庫
   有兩種解決方案,如下:
   修改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

   可以看到預設配置為4096位元組,也就是經常碰到的被截斷為4K,將之改為合適的大小,去掉前面的分號,然後儲存並重起WEB伺服器即可。
   從上面兩個選項可看到範圍為:0 - 2147483647位元組,其實-1也可以的,查看一下PHP原始碼即可發現-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中查詢之前執行SET TEXTSIZE 合適的大小: 只需在SELECT之前執行
   mssql_query("SET TEXTSIZE 65536");
   從上面PHP原始碼中可看到其實也是執行SET TEXTSIZE的
  二、針對Sybase資料庫
   由於該擴充在php.ini沒有像SQL SERVER那樣的選項可配置,所以只有採用上面的第二種方法,即:
   在SELECT之前執行
   sybase_query("SET TEXTSIZE 65536");

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.