MSSQL 不能用DB-Library(如 ISQL)或 ODBC 3.7或更早版本将 ntext 数据

不能用DB-Library(如 ISQL)或 ODBC 3.7或更早版本将 ntext 数据 用PHP连接SQL SERVER数据库时,出了个错,百度了一下,原来是SQL SERVER里有的字段在PHP里有编码问题。把原文贴出来:
Warning: mssql_query() [function.mssql- query]: message: 不能用 DB-Library(如 ISQL)或 ODBC 3.7 或更早版本将 ntext 数据或仅使 用 Unicode 排序规则的 Unicode 数据发送到客户端。 (severity 16) in D:\PHPnow\htdocs\s \include\db_mssql.class.php on line 55
Warning: mssql_query() [function.mssql-query]: Query failed in D:\PHPnow\htdocs\s\include\db_mssql.class.php on line 55
MsSQL Query:SELECT * FROM PE_Config
MsSQL Error:1
MsSQL Errno:1
Message:MsSQL Query Error
在PB开发过程中,由于数据库中使用了ntext字段,出现以下提示错误,郁闷了很长时间找不到解决方案,后查阅大量资料,终于明白:

PB报错: 不能用 DB-Library(如 ISQL)或 ODBC 3.7 或更早版本将 ntext 数据或仅使用 Unicode 排序规则的 Unicode 数据发送到客户端。

————————————————

由于sql server中,ntext和nvarchar字段是用unicode编码存储内容的,因此php通过mssql扩展读取带ntext和nvarchar类型字段的时候会抱错。

如果 title 字段类型为 nvarchar,content 字段类型为 ntext ,那么下面的sql语句会报错:

select title,content from article where 1

正确的写法是:

select convert(varchar(255),title) as title, convert(text,content) as content from article where 1

或者不使用ntext字段

也就是,比如使用了stuff函数后,将结果集转换为text或者varchar即可解决。。

About 智足者富

http://chenpeng.info

发表评论

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>