我正在尝试使用PHP查询来连接和提取MSSQL EXPRESS(2008 R2)数据库中的数据。但是当我从数据库中提取基于ntext的数据时,我收到了一个错误。
错误是;
无法使用DB-Library(例如ISQL)或ODBC 3.7或更早版本将Unicode数据中的Unicode数据或ntext数据发送到客户端。 <严重性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);
对此有任何帮助表示赞赏....
谢谢....
答案 0 :(得分:58)
mssql_query()
manual page
SELECT CAST(field1 AS TEXT) AS field1 FROM table
/etc/freetds.conf
中的版本从4.2升级到8.0(如果PHP服务器是* nix)SELECT *
次查询如果您在该页面上搜索ntext
,则需要更多。
答案 1 :(得分:49)
以下是您可能需要了解的一些事项:
为Debian(Lenny / Squeeze)安装mssql支持:
apt-get install 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中编辑“charset”(但如果你以前在这里做过,你就不需要了 freetds.conf): ;指定客户端字符集.. ;如果为空或未设置,则使用来自freetds.comf的客户端字符集 ;这仅在使用FreeTDS编译时使用
mssql.charset = "UTF-8"
如果需要unicode支持,请使用nchar / nvarchar / ntext列类型。
答案 2 :(得分:5)
就我而言,我需要安装:
$('.gallery-info').each(function() {
var descLength = 140;
var str = $(this).text();
var patt = new RegExp(/[,;.:!()&\s$]/g);
if (str.length > descLength) {
$(this).text(str.substr(0, descLength) + "...");
}
});
修改/etc/freetds.conf文件:
sudo apt-get install php-sybase