1. 论坛系统升级为Xenforo,欢迎大家测试!
    Dismiss Notice

大家帮忙看下!PHP连接MSSQL受阻!

Discussion in '后端开发' started by xledoo, May 1, 2006.

  1. xledoo

    xledoo New Member

    Joined:
    Nov 15, 2005
    Messages:
    109
    Likes Received:
    0
    先申明一下~小弟今天刚学PHP,属菜菜菜小鸟,看了别骂,希望大家帮忙!

    目的:通过PHP连接MSSQL,并能插入(用户注册),查询(用户列表)!
    方法:1。直接连接MSSQL。 2。通过文件ODBC数据源!

    实际操作受阻:
    方法1:
    直接连接MSSQL,设置了常用变量以后可以正常连接数据库了!并能查询!代码如下:
    Code:
    <?php
    require_once 'config.inc.php';   //引用变量
    
    $connect = @mssql_connect($Server,$User,$Pass) or die("不能成功连接 $Server 服务器,请检查sa帐号密码是否填写正确"); 
    $db = @mssql_select_db($test, $connect) or die("不能连接选择的 $test 数据库,请填写正确的test数据库名称"); 
    $query = "SELECT name From users";    //从users表中查询name
    $result = mssql_query($query);
    while($row = mssql_fetch_array($result)) 
    { 
    echo "<li>" . $row["name"] . "</li>";   //列出name
    } 
    
    这样就算简单的列出用户了!但小弟不管用什么方法都不能注册!数据插入不了!
    下面是reg.php页面的code~麻烦大家给看看!
    Code:
    require_once 'config.inc.php';  //引用
    $connect = @mssql_connect($Server,$User,$Pass) or die("不能成功连接服务器,请检查sa帐号密码是否填写正确"); 
    mssql_select_db($test, $connect) or die("不能连接选择数据库,请填写正确数据库名称"); 
     
    
    $login_id     =$_POST['name'];//这是传递~!没错吧?
    $d_email     =$_POST['email'];
    $passwd     =$_POST['passwd'];
    
    if($action == "reg")
    {
        $db = @mssql_select_db($test, $connect) or die("不能连接选择的数据库,请填写正确的数据库名称");
        $query = $db->query("INSERT INTO users(name,email,passwd) values ('".$name."','".$email."','".$passwd."')");//插入有问题吗?
        $Result = mssql_query($query,$db); //这里搞不懂,用$connect效果也一样!
    	if($Result)  //如果插入,显示“添加成功”
    	{
    		echo '添加成功';
    	}
    }
    else
    { 
    echo "添加失败","<br>";
    }
    
    
    echo "$name","<br>","$email","<br>","$passwd";    //事实证明传递没有问题,因为“添加失败”后填写的资料都能显示!
    
    mssql_close();
    ?>
    
    我写了个htm,FORM的提交地址是“reg.php?action=reg" 这里应该没有错!因为填写的资料都传递到reg.php了!
    大家帮我看看啊!
     
    #1 xledoo, May 1, 2006
    Last edited: May 1, 2006
  2. 红杏

    红杏 New Member

    Joined:
    Sep 5, 2005
    Messages:
    417
    Likes Received:
    1
  3. xledoo

    xledoo New Member

    Joined:
    Nov 15, 2005
    Messages:
    109
    Likes Received:
    0
    方法2
    PHP连接ODBC
    首先我建立的ODBC文件DNS
    打开ODBCAC32 选择”文件DNS“---SQL Server ---ID和NT验证---建立了"test.dns”文件
    路径为C:\Program Files\Common Files\ODBC\Data Sources\test.dns 测试连接成功!

    然后是PHPcode:
    Code:
    // 这里的$dns是指的我建立的test这个名称吗?
    $connection = odbc_connect( $dns, $user, $pass ) or die("不能成功连接服务器");
    
    通过这种方法无法连接,而且奇怪的是错误显示 "用户 IUSR_* 登陆失败“,IUSR_*不是系统来宾帐号吗?SA和密码都没有用!不知道为什么!
    然后我修改了 IUSR_* 帐号的密码!并修改了MSSQLSERVER服务的启动帐号为 IUSR_* ,这样就能连接了~可用的同样不是SA帐号,而是IUSR_*帐号!

    请高手解答一下!拜托了!指条明路吧!:lovely:
     
  4. 小叶

    小叶 New Member

    Joined:
    Sep 4, 2005
    Messages:
    17,941
    Likes Received:
    33
    PHP:
    $query $db->query("INSERT INTO users(name,email,passwd) values ('".$name."','".$email."','".$passwd."')");//插入有问题吗?
    如果连接正常,别的问题,我是看不出,
    不过有query() 函数?
     
  5. xledoo

    xledoo New Member

    Joined:
    Nov 15, 2005
    Messages:
    109
    Likes Received:
    0
    谢谢小叶~!
    再帮忙看一下下面这段对不?

    Code:
    if($action == "reg")
    {
        $query = "insert into users(name,email,passwd) values ('".$name."','".$email."','".$passwd."')";
        $result = mssql_query( $query,$connect ); 
    我初学,没看出什么问题!但同样不行,还是“添加失败”传递OK!:ft: