[英]MSSQL Query issue in PHP and querying text data
我正在嘗試在PHP中進行查詢以連接並從MSSQL EXPRESS(2008 R2)數據庫中提取數據。 但是,當我從數據庫中提取基於ntext的數據時遇到錯誤。
錯誤是;
只能使用Unicode排序規則或ntext數據的Unicode數據不能使用DB-Library(例如ISQL)或ODBC 3.7或更早版本發送給客戶端。 (嚴重性16)在
而我的劇本是
$myServer = ".\SQLEXPRESS";
$myUser = "sa";
$myPass = "blablabla";
$myDB = "test";
//connection to the database
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer");
//select a database to work with
$selected = mssql_select_db($myDB, $dbhandle)
or die("Couldn't open database $myDB");
//declare the SQL statement that will query the database
$query = "SELECT * FROM dbo.table WHERE query='2'";
//$query .= "FROM dbo.table ";
//$query .= "WHERE query='2'";
//execute the SQL query and return records
$result = mssql_query($query);
$numRows = mssql_num_rows($result);
echo "<h1>" . $numRows . " Row" . ($numRows == 1 ? "" : "s") . " Returned </h1>";
//display the results
while($row = mssql_fetch_array($result))
{
echo "<li>" . $row["query"]. "</li>";
}
//close the connection
mssql_close($dbhandle);
在這方面的任何幫助表示贊賞....
謝謝 ....
mssql_query()
手冊頁上的注釋中的mssql_query()
選項
SELECT CAST(field1 AS TEXT) AS field1 FROM table
/etc/freetds.conf
的版本從4.2更改為8.0(如果PHP服務器是* nix) SELECT *
查詢 如果在該頁面上搜索ntext
,則更多。
您可能需要了解以下幾點:
為Debian(Lenny / Squeeze)安裝mssql支持:
apt-get安裝php5-sybase
當您收到此錯誤消息時:“僅使用Unicode排序規則或ntext數據的Unicode數據無法使用DB-Library(例如ISQL)或ODBC 3.7或更早版本發送給客戶端。”
在/etc/freetds/freetds.conf中添加以下兩行(最后兩行):
[global] ;tds version = 4.2 tds version = 8.0 client charset = UTF-8
您也可以在php.ini中編輯“字符集”(但是如果您以前在freetds.conf中進行過編輯則不需要): 指定客戶端字符集。 如果為空或未設置,則使用freetds.comf的客戶端字符集; 僅在與FreeTDS一起編譯時使用
mssql.charset = "UTF-8"
如果需要unicode支持,請使用nchar / nvarchar / ntext列類型。
就我而言,我需要安裝:
sudo apt-get install php-sybase
並修改/etc/freetds.conf文件:
...
[global]
# TDS protocol version
; tds version = 4.2
tds version = 8.0
client charset = UTF-8
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.