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

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");

(0)

相关推荐

  • php mssql扩展SQL查询中文字段名解决方法

    一.问题: 数据库是MS SQLServer2000,要把SQLServer2000里的一张表的数据导入MySQL5,其中SQLServer2000表的字段以简体中文命名(强烈建议不要以中文做为字段名).其实操作就是对SQLServer查询记录,插入到MySQL里.选择的脚本语言是PHP,PHP打开MSSQL和MySQL扩展,对这两个数据库操作都是很容易的问题. 问题就出现在SQLServer中表的字段名是中文,写好的查询语句在SQLServe里测试是通过有记录返回,用PHP的MSSQL扩展查询

  • php 数据库字段复用的基本原理与示例

    一.逻辑代数基础: 1,数字用二进制表示,所有可能出现的数只有0和1两个. 2,基本运算只有"与"."或"."非"三种. 与运算定义为:(用 & 表示与运算) 0 & 0 = 0 0 & 1 = 0 1 & 0 = 0 1 & 1 = 1 可以简单理解为:只要有一个0,结果就是0,和乘法类似. 或运算定义为:(用 表示与运算) 0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 1 可以简单理解为:

  • php判断输入不超过mysql的varchar字段的长度范围

    但是如果在utf-8编码下,一个汉字是占3个字符长度的,比如字符串$str="你好啊!!"; 如果你用strlen函数来判断,长度是11,正好超过了varchar的长度,但实际上确不是这样,如果直接到phpmyadmin里面执行insert语句,这条字符串是可以插入的! 对于数据库来说,它的长度是5,那么我们如何用PHP来得到这个长度呢?使用iconv_strlen()函数! echo iconv_strlen($str,'utf-8′); 注意第二个参数,是当前字符集,这样根据不同的

  • php使用sql数据库 获取字段问题介绍

    在PB开发过程中,由于数据库中使用了 ntext字段,出现以下提示错误,郁闷了很长时间找不到解决方案,后查阅大量资料,终于明白:PB报错: 不能用 DB-Library(如 ISQL)或 ODBC 3.7 或更早版本将 ntext 数据或仅使用 Unicode 排序规则的 Unicode 数据发送到客户端.----------------由于sql server中,ntext和nvarchar字段是用unicode编码存储内容的,因此php通过mssql扩展读取带ntext和nvarchar类型

  • PHP以指定字段为索引返回数据库所取的数据数组

    很多情况下,我们从接触一个新的项目到开发完成,再回过头来仔细浏览一下自己写的代码,很多都是我们以前用熟练的代码.所以,在完成每个新项目的时 候,适当的做些项目总结.代码总结,或许你会在以后的项目中用得着,极有可能获得意外的收获,比如:代码优化,想到了更好.速度更快的实现方法等等. 牛逼的程序开发者有时候不在于代码量的多少,而是程序的代码简洁性.逻辑复杂但实现的方便性,这些才说明是否是一位好的程序员.我们不做日夜加班到深夜,拼代码量的程序员! 这篇和大家分享几个使用得PHP编程技巧,有些技巧是在看

  • mysql下创建字段并设置主键的php代码

    复制代码 代码如下: mysql_select_db("hills_database_test",$dbcon); $alterpkadd="alter table hills_testcreatetable add id int(32) not null auto_increment primary key;"; mysql_query($alterpkadd,$dbcon); mysql_close($dbcon); 嘿嘿..好容易哟..一句话搞定

  • php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串

    数据库脚本: -- -------------------------------------------------------- -- -- 表的结构 `highot_attachment` -- 复制代码 代码如下: CREATE TABLE IF NOT EXISTS `highot_attachment` ( `id` int(11) NOT NULL auto_increment, `phone_number_id` int(11) NOT NULL COMMENT 'phone_n

  • php获取字段名示例分享

    复制代码 代码如下: <?php$link = mysql_connect('localhost', 'username', 'password');$fields = mysql_list_fields("database", "table", $link);$columns = mysql_num_fields($fields);$field = false;for ($i = 0; $i < $columns; $i++) {    $field

  • php面向对象 字段的声明与使用

    字段是用于描述类的么个方面的性质. 字段是用于描述类的某个方面的性质.它与一般的PHP 变量非常相似,只是有一些细微的差别,本节将介绍这些差别.这一节还将讨论如何声明和使用字段,下一节则介绍如何使用字段的作用域来进行访问限制. 声明字段 字段声明的有关规则与变量声明的规则非常类似:实际上,可以说没有区别.因为PHP 是松散类型的语言,字段甚至不需要声明:可以由类对象同时创建和赋值,但很少会这样做.相反,常见的做法是在类开始处声明字段.此时可以为字段赋初值.示例如下: 复制代码 代码如下: cla

  • PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)

    根据 Mysql 里的字段 自动生成 类文件: 但需要导入: require_once ./db/ez_sql_core.php;require_once ./db/ez_sql_mysql.php; 帮助文档:http://jvmultimedia.com/docs/ezsql/ez_sql_help.htm 上图 : 核心代码: 复制代码 代码如下: <?php class db{ /******************************************************

随机推荐