国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php與mssql的ntext字段錯誤總結

2024-05-04 21:47:20
字體:
來源:轉載
供稿:網友

php + mssql 讓真讓人痛苦。這些讀 php 讀 mssql 的 ntext 字段類型問題又來了:當 ntext 的內容過長時,居然讀不完整。

在網上找了很久,都是說 php 讀 ntext 出錯的,但沒發現我的頁面出錯,就郁悶了。后來才查到是說 php 默認最大只能讀 4K 的內容,原來是我的內容超過了 4K。修改方法如下:

1、把 php 升級到 php5,還好,我的已經是 php5 了。

2、調整 php.ini 的參數,把 php 默認最大只能讀 4K 改大一點。

  1. ; Valid range 0 - 2147483647.  Default = 4096. 
  2. ;mssql.textlimit = 4096 
  3. ; Valid range 0 - 2147483647.  Default = 4096. 
  4. ;mssql.textsize = 20480 

把 mssql.textlimit  和 mssql.textsize 前面的“;“去了,再把默認值勤改大一點,比如 20480 (20K)

3、重啟 web 服務器。

本以為激動人心的時刻會來臨,運行 php 頁面,效果還是跟以前一樣,字段數據沒有完全讀出來。后來又找到資料說 php 對 ntext 的支持不是很友好,要轉為 text。于是又用Convert(text, content) 轉了,無效果不說,還差一點把我的 iis 弄死。在網上找了很久都無解。就在我打算放棄時,一個嘗試的概念讓我把數據庫連接方式改了一下。我把 odbc_connect 改為 mssql_connect 居然就成功了。

php 鏈接mssql問題 ntext不能讀取

明明可以鏈接到數據庫,卻不能讀取的數據。Google,百度一番之后終于知道了,原來是php讀取mssql的 ntext字段反回值為空的,建議可以把ntext字段改成 text。

如果是表里面沒有ntext字段,可以用以下代碼:

  1. // Connect to MSSQL 
  2. $link = mssql_connect(‘KALLESPCSQLEXPRESS’, ‘sa’, ‘phpfi’); 
  3. if(!$link    !mssql_select_db(‘php’, $link)) 
  4. die(‘Unable to connect or select database!’); 
  5. // Do a simple query, select the version of 
  6. // MSSQL and print it. 
  7. $version = mssql_query(‘SELECT @@VERSION’); 
  8. $row = mssql_fetch_array($version); 
  9. echo $row[0]; 
  10. // Clean up 
  11. mssql_free_result($version); 

如果表里面有ntext軍字段,且不好修改回text字段, 可以如下:

1.修改 php.ini,打開php.ini,找到:;mssql.textlimit = 4096 改為 mssql.textlimit = 2147483647

找到:;mssql.textsize = 4096 改為 mssql.textsize = 2147483647

2.可以使用修改字段,由于sql server中,ntext和nvarchar字段是用unicode編碼存儲內容的,因此php通過mssql擴展讀取帶ntext和nvarchar類型字段的時候會抱錯。

如果 title 字段類型為 nvarchar,content 字段類型為 ntext ,那么下面的sql語句會報錯:

錯的:select title,content from article

正確的:select convert(varchar(255),title) as title, convert(text,content) as content from article{這個方法不太實用,如果ntext內容 太長 轉換之后會丟失數據,也就說過長的文章被截斷了,而且在sql2008中 把ntext改成 nvarchar(max) 也不行}

3.如果你是虛擬主機,可以使用adodb 組件來讀取。如果你主機不支持,目前筆者也沒辦法了。

  1. include(“adodb/adodb.inc.php”); //包含adodb類庫文件 
  2. $conn=NewADOConnection(‘odbc_mssql’); //連接SQL Server數據庫 
  3. $conn-》Connect(“Driver={SQL Server};Server=localhost;Database=mydb;”,‘username’,‘password’); 

{使用adodb有一點要注意,使用adodbPHP連MSSQL的前提是驅動問題,5.2.10之前,PHP自帶的驅動只支持MSSQL 7.0,如果要支持MSSQL 2000,需要將MSSQL 2000的ntwdblib.dll(2000.80.2039.0)復制到System32或者PHP目錄下5.2.11才支持MSSQL 2000,如果需要支持MSSQL 2005和2008,需要安裝微軟提供的驅動,所以如果是虛擬主機基本沒辦法

讀取mssql的ntext字段反回空置

在測試的時候明明可以鏈接到數據庫,但是怎么也讀取不到數據。經過查找資料發現原來是php讀取mssql的 ntext字段反回值為空的,建議可以把ntext字段改成 text。

如果是表里面沒有ntext字段,可以用以下代碼:

  1. // Connect to MSSQL  
  2.  
  3. $link = mssql_connect('KALLESPCSQLEXPRESS''sa''phpfi'); 
  4. if(!$link    !mssql_select_db('php'$link))  
  5. {  
  6. die('Unable to connect or select database!');  
  7. // Do a simple query, select the version of  
  8. // MSSQL and print it.  
  9. $version = mssql_query('SELECT @@VERSION');  
  10. $row = mssql_fetch_array($version); 
  11. echo $row[0]; 
  12. // Clean up  
  13. mssql_free_result($version);  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 马鞍山市| 沁阳市| 宜昌市| 安徽省| 宜宾市| 宿迁市| 永福县| 鹤壁市| 睢宁县| 西林县| 冕宁县| 永善县| 闽侯县| 鞍山市| 铁力市| 和龙市| 鹤岗市| 遵化市| 黎平县| 西华县| 长寿区| 土默特左旗| 鲜城| 志丹县| 安康市| 广平县| 那坡县| 边坝县| 邵阳县| 萝北县| 桂平市| 柞水县| 吐鲁番市| 普宁市| 绩溪县| 新竹县| 阿克苏市| 大连市| 邛崃市| 格尔木市| 绥滨县|