php+mssql的遇到一些问题
2012-12-28 12:43
344 查看
1.php从数据库中读取日期格式被自动转换了,形如12 26 2012 9:05PM,解决方法是在php.ini中把mssql.datetimeconvert 设置为 Off。
2.php查询mssql时,varchar、nvarchar字段被截断为255字节,而数据库中的数据一切正常,只是取出来的数据被截断了。解决方法:
如果表中有多个字段,或者程序已经写好,则需要改写许多sql语句,这时也可以采用将varchar(n)改为varchar(max),这时类型自动转换为text。缺点就是长度限制功能不能实现了。
如果发现text类型字段长度受限,则需要修改php.ini中的mssql.textlimit 和mssql.textsize。
3.不能用 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
或者干脆不使用nvarchar和ntext,代之以varchar和text。
2.php查询mssql时,varchar、nvarchar字段被截断为255字节,而数据库中的数据一切正常,只是取出来的数据被截断了。解决方法:
select cast(目标字段 as text) from 表名
CAST ( expression AS data_type ) expression 为目标字段 data_type 为要转换成的数据类型
如果表中有多个字段,或者程序已经写好,则需要改写许多sql语句,这时也可以采用将varchar(n)改为varchar(max),这时类型自动转换为text。缺点就是长度限制功能不能实现了。
如果发现text类型字段长度受限,则需要修改php.ini中的mssql.textlimit 和mssql.textsize。
Little idea about 255 characters limitation. :) In tables I'm using column type "varchar" or "nvarchar" instead "text". And also I use for example varchar(8000). And there is "a bug". :) PHP will read this column only as varchar(255). So how to read more then 255 chars from varchar(8000)? It is very easy, use CAST to convert varchar type to text type. select CAST(Comment as TEXT) from Job PHP will read it. Check php.ini section [MSSQL] and set maximum text length. Check parameters mssql.textlimit = 4096 mssql.textsize = 4096 Maximum length is 2147483647
3.不能用 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
或者干脆不使用nvarchar和ntext,代之以varchar和text。
相关文章推荐
- Mac 下编译 PHP 扩展遇到的一些问题
- phpexcel 遇到的一些问题
- 整理PHP_YII环境安装遇到的一些问题
- Centos7 安装 php7.0.16 遇到的一些问题
- 自学PHP遇到的一些小问题积累
- 安装php遇到一些常见问题
- 关于php socket编程中遇到的一些问题
- CentOs 编译php 遇到的一些问题
- IIS7.0通过FastCGI方式运行PHP遇到的一些问题及解决方法
- 整理最近php面试过程中遇到的一些问题
- IIS7.0通过FastCGI方式运行PHP遇到的一些问题及解决方法
- 在编写PHP时遇到的一些小问题
- php连接mssql中遇到无法连接的问题
- php遇到的一些问题
- php 遇到的一些问题
- php运行时遇到的一些问题和解决方案
- 配置IIS,Apache,PHP过程中遇到的一些问题
- apach配置php,cgi支持遇到的一些问题解决方法
- 安装iis和php环境时遇到的一些问题总结
- 整理PHP_YII环境安装遇到的一些问题