很自虐的搭配php+MSSQL,太多的坑,就不说text型被截断了。
受限于现有的asp+mssql应用,新增的部分功能使用php开发。对一个表的读写,后台使用asp,读写都很正常。前台一个调用是php写的,但就是遇到一个诡异的问题,要对数据做一个很复杂的解析处理,结果是数据丢失一部分。一层一层的输出,最后才发现是从数据库读出来了数据就不完整,这可奇怪了。又不是text型的数据,加了ini_set()修正text型默认长度限制,也不行。
但被截断长度很奇怪,恰恰是254个字节,似乎正好是较老的mssql里varchar()的默认最大长度;而该字段的实际是varchar(1000);
难道是字段类型问题?
于是修改该字段为text型,再执行,全好了,没有一点异常。
看来php+mssql实在是个自虐的搭配,不知道还有多少坑….
不过限于老的程序架构,也是个没办法的,人总是要吃饭的….
[另记: 盘点php+mssql下的坑]
这些坑还是有解决方案的,先留着,以后补充
1 text/ntext型字段长度被截断
2 php下mssql 库不支持ntext类型的数据
3 “varchar(n) 其中n>254 ”类型数据被截断
4 php5.3以后的win32 官方二进制版不支持mssql库