查看: 7484|回复: 0

PHP连接MSSQL遇到的问题集锦

[复制链接]
发表于 2014-8-14 11:09:38 | 显示全部楼层 |阅读模式
台州网址导航


1.php从数据库中读取日期格式被自动转换了,形如12 26 2012 9:05PM,解决方法是在php.ini中把mssql.datetimeconvert 设置为 Off。

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

台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州维博网络(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:企业网站建设、网站程序开发、手机APP客户端、平面设计、主机域名、虚拟空间、网站推广、网站优化、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2025 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表