2009-10-01 48 views
2

我正在使用mssql_fetch_object從MSSQL表中獲取一些數據,但文本似乎在頁面上被切斷。mssql_fetch_object文字字符數限制?

表中的數據全部存在,但它似乎在視圖頁中切斷。

有沒有其他人遇到過這個問題,也許知道一個解決方法?這是我的代碼;

<?php include('includes/session.php'); 
$query = "SELECT content FROM pages WHERE id = '11'"; 
$result = mssql_query($query); 
$page = mssql_fetch_object($result); 
?> 

<div id="leftcol"> 
<?php echo stripslashes($page->content) ?> 
</div> 
+0

爲什麼的stripslashes?數據從數據庫原始出來,你只需要把它放在頁面上就是htmlspecialchars()它(假設它是文本,而不是HTML)。 – bobince 2009-10-01 14:38:46

+0

@bobince當我們使用CK編輯器時,內容中有一些格式。但是,即使我們不使用反斜槓,內容在視圖頁面中似乎仍然被切斷。:S – doubleplusgood 2009-10-01 15:10:08

+0

我會建議做一個VAR_DUMP()來查看返回的是什麼 echo var_dump($ page-> content); – 2009-10-01 17:05:35

回答

4

我不熟悉在php中使用mssql,但我只是嘗試使用mysql沒有問題的例子。

這看起來可疑我

的var_dump()返回的字符串(4096)

所以我做了一些谷歌上搜索,發現這個鏈接

http://www.bram.us/2007/07/05/my-dotd-ms-sql-vs-php-4096-is-the-default-limit/

這表明,以將mssql.textlimit和mssql.textsize更改爲您的php.ini中的1048576(即220),因爲默認值爲4096.希望有所幫助。

的php.ini

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

它是一個VARCHAR字段嗎? http://docs.php.net/mssql_field_length說:

注:注意Windows用戶
由於PHP(MS DBLIB C API)使用的底層API中的限制,VARCHAR字段的長度被限制爲255,如果你需要存儲更多的數據,請改用TEXT字段。
+0

@VolkerK數據類型是TEXT,這是奇怪的原因切斷:S – doubleplusgood 2009-10-01 14:01:49

0

對數據嘗試strlen()並將長度與數據庫內的數據進行比較。它應該給你一些問題的地方(db或php)

0

嘗試設置

mssql.textlimit = 10000000 
mssql.textsize = 10000000 

在php.ini或ini_set('mssql.textlimi', 10000000);

0

設置我有silimar問題,當我使用PHP直接連接到MS SQL和數據類型Varchar只能檢索最多255個字符。該問題通過將數據類型轉換爲查詢下的文本來解決,並且它現在可行。

如:

從表1

選擇遞減

選擇轉換(文字,DESC)作爲遞減從表1