PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法_php技巧

Author: Wenlong Wu
一、针对MS SQL SERVER数据库
   有两种解决方案,如下:
   修改php.ini来实现: 打开php.ini,可看到mssql.textsize,mssql.textlimit两个选项:

   ; Valid range 0 - 2147483647. Default = 4096.
   ;mssql.textlimit = 4096
   ; Valid range 0 - 2147483647. Default = 4096.
   ;mssql.textsize = 4096

   可以看到默认配置为4096字节,也就是经常碰到的被截断为4K,将之改为合适的大小,去掉前面的分号,然后保存并重起WEB服务器即可。
   从上面两个选项可看到范围为:0 - 2147483647字节,其实-1也可以的,查看一下PHP源代码即可发现-1表示无限制 :)
  
if (MS_SQL_G(textlimit) != -1) {
   sprintf(buffer, "%li", MS_SQL_G(textlimit));
   if (DBSETOPT(mssql.link, DBTEXTLIMIT, buffer)==FAIL) {
   efree(hashed_details);
   dbfreelogin(mssql.login);
   RETURN_FALSE;
   }
   }
   if (MS_SQL_G(textsize) != -1) {
   sprintf(buffer, "SET TEXTSIZE %li", MS_SQL_G(textsize));
   dbcmd(mssql.link, buffer);
   dbsqlexec(mssql.link);
   dbresults(mssql.link);
   }
   在PHP中查询之前执行SET TEXTSIZE 合适的大小: 只需在SELECT之前执行
   mssql_query("SET TEXTSIZE 65536");
   从上面PHP源代码中可看到其实也是执行SET TEXTSIZE的 :)
  二、针对Sybase数据库
   由于该扩展在php.ini没有像SQL SERVER那样的选项可配置,所以只有采用上面的第二种方法,即:
   在SELECT之前执行
   sybase_query("SET TEXTSIZE 65536");

时间: 2024-12-25 04:25:24

PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法_php技巧的相关文章

php中导出数据到excel时数字变为科学计数的解决方法_php技巧

在数据导出到excel时数字格式不对,一般分为以下两种情况. 1.excel单元格设置长度不够 解决方法: 复制代码 代码如下: //在excel.php文件中 $objActSheet = $objPHPExcel->getActiveSheet(); // 设置 栏目名称 $objActSheet->setCellValue("b1", "卡号"); // 设置列的宽度 $objActSheet->getColumnDimension('b')

PHP中usort在值相同时改变原始位置问题的解决方法_php技巧

从 PHP 4.1.0 后,usort 在比较的值相同时,原始位置可能会改变,文档中是这样说的: If two members compare as equal, their order in the sorted array is undefined. 也就是说,如果比较的2个值相同,则它们在排序结果中的顺序是随机的.如果你需要保持相同值的原始位置,可以参考本文的方法. 演示数据: 复制代码 代码如下: <?php /* 解决 PHP 中 usort 在值相同时改变原始位置的问题 作者:Art

sql server定时作业调用Kettle job出错的快速解决方法_MsSql

错误信息: Unable to list jar files in plugin folder 'C:\Windows\system32\config\systemprofile\.kettle\plugins' Unable to get VFS File object for filename 'C:\Windows\system32\config\systemprofile\.kettle\plugins' : Could not find file with URI "C:\Window

sql server定时作业调用Kettle job出错的快速解决方法

错误信息: Unable to list jar files in plugin folder 'C:\Windows\system32\config\systemprofile\.kettle\plugins' Unable to get VFS File object for filename 'C:\Windows\system32\config\systemprofile\.kettle\plugins' : Could not find file with URI "C:\Window

Android中利用NetworkInfo判断网络状态时出现空指针(NullPointerException)问题的解决方法_Android

在Android中,很多人会用如下的方法判断当前网络是否可用: /** * 获取当前网络状态(是否可用) */ public static boolean isNetworkAvailable() { boolean isAalable = false; ConnectivityManager connManager = (ConnectivityManager) BaseApplication.getApplication().getSystemService(Context.CONNECTI

Sql Server安装出错,安装程序配置服务器失败的解决方法小结_mssql2005

错误重现:首先在控制面板里卸载了sqlserver软件,一切正常,然后重启(一定要重启,否则没法重装),执行sqlserver的安装程序,一切似乎都正常,一路下一步,安装到了最后,突然提示"安装程序配置服务器失败". 当出现安装程序配置服务器失败时,可以试着用一下方法解决 推荐方法: 在安装SQL Server 2000时,安装快要完成,到最后提示一个错误,如上图,怎么解决呢,不急,请看下面的方法: 把上次安装时产生的"Microsoft SQL Server"文件

SQL Server 2005 企业版没有 Management Studio管理工具的解决方法_应用技巧

在网上找找了半天有以下几种情况: 1.可以直接装上,装上就有. 2.装上后没有,然后把sql 2005全部卸载后再装就有了. 3.装上后没有,从微软官方网站上下载一下:Microsoft SQL Server Management Studio Express, 装上就可以用了. 4.重装系统,先装SQL Server 2005,再装vs2008   看到上面的方法,对我来说可能只有第三种是最好的了,但他是Express,我这人好像有个这个缺 点,如果他不是最好的,而别人可以做到最好的,我就一定

sql server 2000阻塞和死锁问题的查看与解决方法_MsSql

数据库发生阻塞和死锁的现象: 一.数据库阻塞的现象:第一个连接占有资源没有释放,而第二个连接需要获取这个资源.如果第一个连接没有提交或者回滚,第二个连接会一直等待下去,直到第一个连接释放该资源为止.对于阻塞,数据库无法处理,所以对数据库操作要及时地提交或者回滚.二.数据库死锁的现象:第一个连接占有资源没有释放,准备获取第二个连接所占用的资源,而第二个连接占有资源没有释放,准备获取第一个连接所占用的资源.这种互相占有对方需要获取的资源的现象叫做死锁.对于死锁,数据库处理方法:牺牲一个连接,保证另外

sql server 2008 用户 NT AUTHORITY\IUSR 登录失败的解决方法_mssql2008

用户 'NT AUTHORITY\IUSR' 登录失败. 其实这样的情况,要不就是用户名密码不正确,要不就是用户无法登录sql server 2008.一步一步分析. 1.首先asp连接sql server 2008数据库应该没有问题. 之前我用了多种方法,链接数据库,其实链接2000与2005.2008的无区别 需要注意的是: DataServer = "127.0.0.1" DataServer = "(local)" 都是可以使用的 ConnStr="