以前只用 PHP + MySQL,从来没在 PHP 中用过 MSSQL,今天转过来的那个站点正好用的是 MSSQL。刚给他调好了 Register Globals 问题,又一个奇怪的问题就来了。他说他这个系统里面发的新闻有的内容能发,有的不能发,有的能改,有的不能改了。还说以前用着没事。后来发现有两个问题,一个是 php.ini 中有两个选项会影响查询的内容长度。这两个选项是 mssql.textlimit 和 mssql.textsize,把他们改的尽量大一点就好了。另外还有个问题就是 MSSQL 的查询语句跟 MySQL 不太一样,在字符串转义时不是用 /,而是把一个单引号写成两个单引号。这些都是从 PHP 手册的用户注释中发现了,看来 PHP 用户手册的注释真是个好东西。里面还提供了一段程序,用于对 MSSQL 语句中的字符串进行转义编码:
PHP代码
- <?php
- function escapeSingleQuotes($string){
- //escapse single quotes
- $singQuotePattern = "'";
- $singQuoteReplace = "''";
- return(stripslashes(eregi_replace($singQuotePattern, $singQuoteReplace, $string)));
- }
- ?>
把这个函数用上以后,又改了那两个选项,一切问题就都解决了。