上php.net的bug report中看到这个问题,里面的人的解释是:The DB Library used for the MSSQL extension does not support char and varchar columns with more than 256 characters.char and varchar columns was extended from 256 to 8000 in SQL Server 7.0 but the DB library from Microsoft was not updated.所以,这个问题是存在的,但不是php的bug,是微软不更新它的c-library的问题。有一个很简单的解决方案。在所有的大于256的varchar或char或nvarchar之类的,用cast将其转为text类型就行了。给出一个范例如下,其中theValue字段是varchar(3000): <? $conn = mssql_connect("localhost","sa","9527") or die("cannot connect to db"); $query = "select cast (theValue as text) as theValue from MyTest.dbo.table1"; $result = mssql_query($query,$conn) or die("cannot exec sql:$query"); $array = mssql_fetch_array($result); echo $array['theValue']; ?>
mssql.textlimit
mssql.textsize
两个参数的值改的大一点
<?php
session_start();
$hostname = "crm\insintek_hean"; //MSSQL Server$dbuser = "kkk"; //用户名$dbpasswd = "1"; //密码//连接数据库$id = mssql_connect($hostname,$dbuser,$dbpasswd) or die("无法连接数据库服务器!");mssql_select_db("ecorg");$query="select * from business"; //查询语句
$sql=mssql_query($query);
while ($r=mssql_fetch_array($sql)){
print $r["content"];
$messageid=$r["messageid"]
}
以上是全部源代码phpinfo 得的值
mssql.textlimit 9000000 9000000
mssql.textsize 900000 900000
你是否是读出大量数据!!!???
不懂在问!!
你是怎么解决的呀,我急呀
我读的是mssql的数据呀
数据类型是 nvarchar
所以我建议你把类型改为text.
varchar columns with more than 256 characters.char and varchar columns was extended from 256 to 8000 in SQL Server 7.0
but the DB library from Microsoft was not updated.所以,这个问题是存在的,但不是php的bug,是微软不更新它的c-library的问题。有一个很简单的解决方案。在所有的大于256的varchar或char或nvarchar之类的,用cast将其转为text类型就行了。给出一个范例如下,其中theValue字段是varchar(3000):
<?
$conn = mssql_connect("localhost","sa","9527") or die("cannot connect to db");
$query = "select cast (theValue as text) as theValue from MyTest.dbo.table1";
$result = mssql_query($query,$conn) or die("cannot exec sql:$query");
$array = mssql_fetch_array($result);
echo $array['theValue'];
?>