我的环境,Windows 2008,SQL Server 2000,php5.2.17.我的链接数据库的代码如下:
<?phpecho "<br/>\n进入mssql<br/>\n";//包含数据库信息的文件
include('db/mssql.inc');//链接成功,返回一个链接标识,失败返回FALSE
$my_conn = mssql_connect($db_server,$db_user_name,$db_password,true);if(!$my_conn)
{
//相当于exit
die('链接数据库失败!');
}
else
{
echo "链接SQL Server成功!<br/>\n";
//关闭SQL链接
mssql_close($my_conn);
}
echo "离开mssql<br/>\n<br/>\n";
?>其中,包含数据库的信息的文件mssql.inc,我现在把数据库的用户和密码都改成不正确的了,
还是显示链接正常。
显示如下:
进入mssql
链接SQL Server成功!
离开mssql
这是为什么呢???
谢谢高手指点,我刚开始学习哦。

解决方案 »

  1.   

    我想....那只能说明你的判断条件正好反掉了....也就是说你至今为止从没成功连接到db过..看看你php里的error_log里有什么。
      

  2.   

    好蛋疼 有人问 为什么老是不成功 现在变成 老是成功
    看起来没什么问题 在if(!$my_conn) 前 var_dump($my_conn); 看下输出什么
      

  3.   

    谢谢各位。
    由于我是新手,所以有点迷惑啊。
    我猜测,是不是和SQL Server的认证有关系??因为我是在我自己的机器上测试的。
    但是我的SQL Server在安装时用的是混合认证啊。
    -------------------------------------------
    我现在把代码改成这样。
    <?phpecho "<br/>\n进入mssql<br/>\n";//包含数据库信息的文件
    include('db/mssql.inc');//链接成功,返回一个链接标识,失败返回FALSE
    $my_conn = 0;
    echo "my_conn=$my_conn<br/>\n";
    $my_conn = mssql_connect($db_server,$db_user_name,$db_password,true);var_dump($my_conn);if($my_conn)
    {
    mssql_select_db($db_name,$my_conn);

    $myquery = "select * from student";

    $myquery_result = mssql_query($myquery);

    $mynum = mssql_num_rows($myquery_result);

    echo "返回行数=$mynum<br/>\n"; echo "链接SQL Server成功!$my_conn<br/>\n";
    //关闭SQL链接
    mssql_close($my_conn);
    }
    else
    {
    //相当于exit
    die('链接数据库失败!');
    }
    echo "离开mssql<br/>\n<br/>\n";
    ?>
    -----------------------------------
    结果是这样的。进入mssql
    my_conn=0
    resource(4) of type (mssql link) 返回行数=3
    链接SQL Server成功!Resource id #4
    离开mssql
      

  4.   


    $my_conn = mssql_connect($db_server,$db_user_name,$db_password,true);
    改成
    $my_conn = mssql_connect($db_server,$user,$password,true);
    看看还正确吗?
      

  5.   

    改成您那样还是正确连接。我测试了一下。
    $my_conn = mssql_connect('192.168.2.2','ssa','ssa',false);
    $my_conn = mssql_connect();改成上面这样的都可以。
    我想我是在本机做测试,默认主机名就是localhost。
    如果将IP地址改成其他的,不是我机器的,就链接失败了。那么应该是使用的本机的系统认证了。
    但是如果不管在哪里,我都想用混合模式认证,应该在哪里调呢??
    谢谢!!
      

  6.   

    各位高手,来帮帮忙啊。
    我在SQL Server的企业管理器---安全性---登录下看到有两个用户。
    一个是sa,另外一个是什么,现在记不得了。
    简单看了一下他的属性,是通过windows身份验证的。
    我直接就把他删了。
    再打开IE。果然不能链接SQL Server了。
    不过我现在怎么也链接不上了。
    代码都改成这样了还是不行啊。
    <?phpecho "<br/>\n进入mssql<br/>\n";$my_conn = mssql_connect("localhost","sa","sa");if($my_conn)
    {
    ...//这里略去了。 //关闭SQL链接
    mssql_close($my_conn);
    }
    else
    {
    //相当于exit
    die('链接SQL Server失败!');
    }
    echo "离开mssql<br/>\n<br/>\n";
    ?>---------------------------
    显示如下啊:
    进入mssql
    链接SQL Server失败!
      

  7.   

    晕死...太能搞了你,mssql可以设置帐号的验证方式,注意看下mssql的工具那,具体怎么弄我已经不记得了.你继续鼓捣
      

  8.   

    新建一个SqlServer用户,重新试验一下,既可以对比,又可以测试成功与否。
      

  9.   

    哈哈,经过仔细研究。和网上无穷无尽的搜索。
    问题解决了啊。
    如果只用混合模式认证。
    请注意啊。在php.ini中,mssql.secure_connection = Off
    必须的啊,我的默认是on,或者是以前改为on的。如果是系统验证,你要改为mssql.secure_connection = On