Warning: mssql_connect() [function.mssql-connect]:

 更新时间:2016年11月25日 17:40  点击:2396

我是这样做的,确定mssql是正常的用户名密码也可以,但下面就是不行。

<?php教程 
$con=mssql_connect( "localhost", "sa ", "123456 ") or die ('error'); 
 
?> 

错误提示
 warning: mssql_connect() [function.mssql-connect]: unable to connect to server: $sa in d:php2.php on line 11
error

下面来看一下我的解决方法吧,
系统是:
win2003+mssql2000+php5.23

实现方法

php目录下有没有ntwdblib.dll有没有这个文件?ntwdblib.dll是客户连接库,如果有查看一下版本号是多少,一般会是7.0的,这个只能与mssq 7.0进行连接,我们为了能与我们现数据库教程版本相同就把mssql下的ntwdblib.dll拷贝到你php 所在的目录替换那个7.0的,重起iis就ok了


插曲,如果你的mssql连接有问题可利用php自带了函数 mssql_get_last_message(),来取得错误信息哦。

,urldecode() 和 rawurldecode() 解码出的字符串是 UTF-8格式的编码,如果URL中含有中文的话,而页面设置又不是 UTF-8 的话,则要把解码出的字符串进行转换,才能正常显示

在php中urlencode和rawurlencode 是对中文进行编码的
string urlencode ( string str)
返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。这是在 rfc 1738 中描述的编码,是为了保护原义字符以免其被解释为特殊的 url 定界符,同时保护 url 格式以免其被传输媒体(像一些邮件系统)使用字符转换时弄乱

*/

$a ='?a=中文';
$urlencode =urlencode($a);
echo $urlencode; //%3fa%3d%d6%d0%ce%c4


/*
string rawurldecode ( string str)
返回字符串,此字符串中百分号(%)后跟两位十六进制数的序列都将被替换成原义字符。
*/

$c = rawurlencode($urlencode);///a%253d%25d6%25d0%25ce%25c4;
echo $c;


/*

用iconv函数:

iconv( "utf-8", "gb2312" , "abc阳光123");

据说这样好些,可以忽略转换时的错误!

iconv( "utf-8", "gb2312//ignore" , "abc阳光123");

mb_convert_encoding的用法见官方:
http://cn.php教程.net/manual/zh/function.mb-convert-encoding.php

做一个gbk to utf-8

< ?php
header("content-type: text/html; charset=utf-8");
echo mb_convert_encoding("我的友仔", "utf-8", "gbk");
?>

再来个gb2312 to big5

< ?php
header("content-type: text/html; charset=big5");
echo mb_convert_encoding("你是我的朋友", "big5", "gb2312");
?>


不过要使用上面的函数需要安装但是需要先enable mbstring 扩展库。

php中的另外一个函数iconv也是用来转换字符串编码的,与上函数功能相似。

下面还有一些详细的例子:
iconv — convert string to requested character encoding
(php 4 >= 4.0.5, php 5)
mb_convert_encoding — convert character encoding
(php 4 >= 4.0.6, php 5)

用法:
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
需要先enable mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉
mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;

开始时经常会碰到如下提示

warning: session_start() [function.session-start]: cannot send session cache limiter - headers already sent (output started at e:php教程www.111cn.netadmin.php:1) in e:phpwww.111cn.netlogolistadminlogo.php on line 2

这是提供session前面己经有输出了,我们只要把session_start()放在最前面,同时最了为避免出错提供可以在前面加@,如@session_start();这样就可以了。

同时也可以在php.ini中修改session.auto_start = 0 为 session.auto_start = 1

就可以了。

 

出现这种问题是变量未定义了,我们只要把加个验证如

$a =isset($_get['aa'])?$_get['aa']:'变量未定义';

这样未定义变量也不会出现undefined variable和 undefined index
提供哦,同时我们还提供在php ini或在php中设置错误不提示的方法


解决方法:
1) error_reporting设置:
找到error_reporting = e_all
修改为error_reporting = e_all & ~e_notice

2) register_globals设置:
找到register_globals = off
修改为register_globals = on

[!--infotagslink--]

相关文章