原因可能是:php對mssql的ntext類型的支援問題;
今天弄了半天,明明可以連結到資料庫,卻不能讀取的資料。Google,百度一番之後終於知道了,原來是php讀取mssql的 ntext欄位反回值為空白的,建議可以把ntext欄位改成 text。
如果是表裡面沒有ntext欄位,可以用以下代碼:
<?php // Connect to MSSQL $link = mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');
if(!$link !mssql_select_db('php', $link)) { die('Unable to connect or select database!'); }
// Do a simple query, select the version of // MSSQL and print it. $version = mssql_query('SELECT @@VERSION'); $row = mssql_fetch_array($version);
echo $row[0];
// Clean up mssql_free_result($version); ?>
|
如果表裡面有ntext軍欄位,且不好修改回text欄位, 可以如下:
1.修改 php.ini
開啟php.ini
找到:
改為
| mssql.textlimit = 2147483647 |
找到:
改為
| 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 |
3.如果你是虛擬機器主機,可以使用adodb 組件來讀取。如果你主機不支援,目前筆者也沒辦法了。
<?php include("adodb/adodb.inc.php"); //包含adodb類庫檔案 $conn=NewADOConnection('odbc_mssql'); //串連SQL Server資料庫 $conn->Connect("Driver={SQL Server};Server=localhost;Database=mydb;",'username','password'); ?> |