为何我的php链接数据库老成功呢?

zhgwbzhd 2012-02-22 01:07:41
我的环境,Windows 2008,SQL Server 2000,php5.2.17.

我的链接数据库的代码如下:
<?php

echo "<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


这是为什么呢???
谢谢高手指点,我刚开始学习哦。
...全文
163 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhgwbzhd 2012-02-23
  • 打赏
  • 举报
回复
哈哈,经过仔细研究。和网上无穷无尽的搜索。
问题解决了啊。
如果只用混合模式认证。
请注意啊。在php.ini中,mssql.secure_connection = Off
必须的啊,我的默认是on,或者是以前改为on的。

如果是系统验证,你要改为mssql.secure_connection = On
  • 打赏
  • 举报
回复
新建一个SqlServer用户,重新试验一下,既可以对比,又可以测试成功与否。
黄袍披身 2012-02-23
  • 打赏
  • 举报
回复
晕死...

太能搞了你,mssql可以设置帐号的验证方式,注意看下mssql的工具那,具体怎么弄我已经不记得了.你继续鼓捣
zhgwbzhd 2012-02-23
  • 打赏
  • 举报
回复
各位高手,来帮帮忙啊。
我在SQL Server的企业管理器---安全性---登录下看到有两个用户。
一个是sa,另外一个是什么,现在记不得了。
简单看了一下他的属性,是通过windows身份验证的。
我直接就把他删了。
再打开IE。果然不能链接SQL Server了。
不过我现在怎么也链接不上了。
代码都改成这样了还是不行啊。
<?php

echo "<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失败!
coder 2012-02-22
  • 打赏
  • 举报
回复
认证的修改在sql server里
zhgwbzhd 2012-02-22
  • 打赏
  • 举报
回复
改成您那样还是正确连接。

我测试了一下。
$my_conn = mssql_connect('192.168.2.2','ssa','ssa',false);
$my_conn = mssql_connect();

改成上面这样的都可以。
我想我是在本机做测试,默认主机名就是localhost。
如果将IP地址改成其他的,不是我机器的,就链接失败了。

那么应该是使用的本机的系统认证了。
但是如果不管在哪里,我都想用混合模式认证,应该在哪里调呢??
谢谢!!
xuzuning 2012-02-22
  • 打赏
  • 举报
回复

$my_conn = mssql_connect($db_server,$db_user_name,$db_password,true);
改成
$my_conn = mssql_connect($db_server,$user,$password,true);
看看还正确吗?
zhgwbzhd 2012-02-22
  • 打赏
  • 举报
回复
谢谢各位。
由于我是新手,所以有点迷惑啊。
我猜测,是不是和SQL Server的认证有关系??因为我是在我自己的机器上测试的。
但是我的SQL Server在安装时用的是混合认证啊。
-------------------------------------------
我现在把代码改成这样。
<?php

echo "<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

heyli 2012-02-22
  • 打赏
  • 举报
回复
好蛋疼 有人问 为什么老是不成功 现在变成 老是成功
看起来没什么问题 在if(!$my_conn) 前 var_dump($my_conn); 看下输出什么
jackfans 2012-02-22
  • 打赏
  • 举报
回复
连接根本就没关嘛!
改一下昵称 2012-02-22
  • 打赏
  • 举报
回复
不排除是你的浏览器缓存作怪
Liv2005 2012-02-22
  • 打赏
  • 举报
回复
我想....那只能说明你的判断条件正好反掉了....也就是说你至今为止从没成功连接到db过..

看看你php里的error_log里有什么。

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧