php与mssql的ntext字段错误总结
php + mssql 让真让人痛苦。这些读 php 读 mssql 的 ntext 字段类型问题又来了:当 ntext 的内容过长时,居然读不完整。
在网上找了很久,都是说 php 读 ntext 出错的,但没发现我的页面出错,就郁闷了。后来才查到是说 php 默认最大只能读 4K 的内容,原来是我的内容超过了 4K。修改方法如
下:
1、把 php 升级到 php5 。
还好,我的已经是 php5 了。
2、调整 php.ini 的参数,把 php 默认最大只能读 4K 改大一点。
; Valid range 0 - 2147483647. Default = 4096.
;mssql.textlimit = 4096
; Valid range 0 - 2147483647. Default = 4096.
;mssql.textsize = 20480
把 mssql.textlimit 和 mssql.textsize 前面的“;“去了,再把默认值勤改大一点,比如 20480 (20K)
3、重启 web 服务器。
本以为激动人心的时刻会来临,运行 php 页面,效果还是跟以前一样,字段数据没有完全读出来。后来又找到资料说 php 对 ntext 的支持不是很友好,要转为 text。于是又用
Convert(text, content) 转了,无效果不说,还差一点把我的 iis 弄死。在网上找了很久都无解。就在我打算放弃时,一个尝试的概念让我把数据库连接方式改了一下。我把
odbc_connect 改为 mssql_connect 居然就成功了。
php 链接mssql问题 ntext不能读取
明明可以链接到数据库,却不能读取的数据。Google,百度一番之后终于知道了,原来是php读取mssql的 ntext字段反回值为空的,建议可以把ntext字段改成 text。
如果是表里面没有ntext字段,可以用以下代码:
代码如下 | 复制代码 |
// Connect to MSSQL $link = mssql_connect(‘KALLESPCSQLEXPRESS’, ‘sa’, ‘phpfi’); if(!$link !mssql_select_db(‘php’, $link)) { die(‘Unable to connect or select database!’); } // Do a simple query, select the version of // MSSQL and print it. $version = mssql_query(‘SELECT @@VERSION’); $row = mssql_fetch_array($version); echo $row[0]; // Clean up mssql_free_result($version); ?》 |
如果表里面有ntext军字段,且不好修改回text字段, 可以如下:
1.修改 php.ini
打开php.ini
找到:
;mssql.textlimit = 4096
改为
mssql.textlimit = 2147483647
找到:
;mssql.textsize = 4096
改为
mssql.textsize = 2147483647
2.可以使用修改字段,由于sql server中,ntext和nvarchar字段是用unicode编码存储内容的,因此php通过mssql扩展读取带ntext和nvarchar类型字段的时候会抱错。
如果 title 字段类型为 nvarchar,content 字段类型为 ntext ,那么下面的sql语句会报错:
错的:
select title,content from article
正确的:
代码如下 | 复制代码 |
select convert(varchar(255),title) as title, convert(text,content) as content from article |
{这个方法不太实用,如果ntext内容 太长 转换之后会丢失数据,也就说过长的文章被截断了,而且在sql2008中 把ntext改成 nvarchar(max) 也不行}
3.如果你是虚拟主机,可以使用adodb 组件来读取。如果你主机不支持,目前笔者也没办法了。
代码如下 | 复制代码 |
include(“adodb/adodb.inc.php”); //包含adodb类库文件 $conn=NewADOConnection(‘odbc_mssql’); //连接SQL Server数据库 $conn-》Connect(“Driver={SQL Server};Server=localhost;Database=mydb;”,‘username’,‘password’); |
{使用adodb有一点要注意,使用adodbPHP连MSSQL的前提是驱动问题,5.2.10之前,PHP自带的驱动只支持MSSQL 7.0,如果要支持MSSQL 2000,需要将MSSQL 2000的ntwdblib.dll(2000.80.2039.0)复制到System32或者PHP目录下
5.2.11才支持MSSQL 2000,如果需要支持MSSQL 2005和2008,需要安装微软提供的驱动
所以如果是虚拟主机基本没办法
}
?>
读取mssql的ntext字段反回空置
在测试的时候明明可以链接到数据库,但是怎么也读取不到数据。经过查找资料发现原来是php读取mssql的 ntext字段反回值为空的,建议可以把ntext字段改成 text。
如果是表里面没有ntext字段,可以用以下代码:
代码如下 | 复制代码 |
// Connect to MSSQL if(!$link !mssql_select_db('php', $link)) // Do a simple query, select the version of echo $row[0]; // Clean up |
如果表里面有ntext军字段,且不好修改回text字段, 可以如下:
1.修改 php.ini
打开php.ini
找到:
;mssql.textlimit = 4096
改为
mssql.textlimit = 2147483647
找到:
;mssql.textsize = 4096
改为
mssql.textsize = 2147483647
2.可以使用修改字段,由于sql server中,ntext和nvarchar字段是用unicode编码存储内容的,因此php通过mssql扩展读取带ntext和nvarchar类型字段的时候会抱错。
如果 title 字段类型为 nvarchar,content 字段类型为 ntext ,那么下面的sql语句会报错:
错的:
select title,content from article
正确的:
代码如下 | 复制代码 |
select convert(varchar(255),title) as title, convert(text,content) as content from article |
3.如果你是虚拟主机,可以使用adodb 组件来读取。如果你主机不支持,目前笔者也没办法了。
代码如下 | 复制代码 |
include("adodb/adodb.inc.php"); //包含adodb类库文件 $conn=NewADOConnection('odbc_mssql'); //连接SQL Server数据库 $conn->Connect("Driver={SQL Server};Server=localhost;Database=mydb;",'username','password'); ?> |

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
