使用PHP访问MSSQL SERVER数据库小结

来源:互联网 发布:足球网游知乎 编辑:程序博客网 时间:2024/04/29 22:35

使用PHP访问MSSQL SERVER数据库小结

发布时间:2007-3-05 01:02   作者: maxy.feng   信息来源: PHPChina 开源社区门户
自学了两天PHP,感觉不错,昨晚突然头脑发热,准备给家里的医药销售软件做个功能扩展。那个软件买得旧了,做购货计划时,只能从库存页面一行一行的看(5000多行,眼都要看花),而且还不能对药品名称排序(它是按基本信息录入的时间顺序显示的),同名不同产地的是前面有显示,中间有显示,后面也有显示,经常是进了货,入库的时候才发现买重复了,其他产地的还有,数量还挺大,该买的却又没买。而且那软件还有连接限制(限制3台,局域网内共有四台,用一台作为服务器,放在办公室,当在服务器上做采购计划的时候,外边销售就只有两台能用)。
所以我想做一个“库存上下限报警表单”通过查询数据库自动生成,降低做采购计划时的工作量,同时绕过那个软件的连接限制。
那个软件用的是MSSQL SERVER 2000,我买的PHP书上讲的都是MySQL,在网上查了查,好少,下了PHP手册,翻译了几个小时的英文,终于能访问能用了,呵呵^_^。下面是我理解的一些用PHP访问MSSQL SERVER 2000的方法给大家探讨,交流一下。

1、首先是准备工作:
    在Windows下通过PHP访问MSSQL SERVER 2000,可以有两种方式,
    (1)利用COM
    (2)一种是使用MSSQL_系列函数  
    要使用这两种都需要在php.ini进行设定:
    (1)允许 DCOM,需要将php.ini中的 ;com.allow_dcom=TRUE前的分号";"去掉。
    (2)使用MSSQL扩展,需要php.ini中的 ;extension=php_mssql.dll前的分号";"去掉。
    (3)确认extension_dir为正确路径,以本机为例:extension_dir = "c:/AppServ/php5/ext"。  
    (4)如果仍然机器报错说找不到c:/AppServ/php5/ext/php_mssql.dll但明明存在这个文件。
        解决方法:将php_mssql.dll,ntwdblib.dll拷贝到系统目录/system32下重启测试。。
        (注:上面两个dll文件不在相同目录下,我的为c:/AppServ/php5/ext/php_mssql.dll;c:/AppServ/php5/ntwdblib.dll)
    另外设置好了后记得重启服务器哦。
    我的PHP环境是用AppServ搭建的,我这样做了后,访问MSSQL SERVER一切正常。若你仍然有问题,请查阅PHP手册php.ini的设置。
2、利用COM访问MSSQL SERVER的简单方法
  $conn = new COM("ADODB.Connection") or die("Cannot start ADO");
  //首先声明一个连接对象
  $connstr = "Provider=SQLOLEDB;
                   Persist Security Info=False;
                   User ID=youruid;
                   Password=yourpwd;
                   Initial Catalog=yourdatabase;
                   Data Source=127.0.0.1";
  //设置连接字符串(很奇怪Data Soure为localhost或服务器名不行总是报错而为(local)或127.0.0.1却行,希望哪个高手帮我说明一下)
  $conn->Open($connstr);    //建立数据库连接
  $sqlstr = "select * from test";   //设置查询字符串
  $rs = $conn->Execute($sqlstr);   //执行查询获得结果
  或者
          //$rs = new com("adodb.recordset");         //声明一个数据集对象
          //$rs->open($sqlstr,$conn);//,3,3);            //获得数据集rcordset内容

  $num_cols = $rs->Fields->Count();  //得到数据集列数  
  while (!$rs->EOF)         //输出结果
  {
          echo $rs->Fields['name']->Value."<BR>"; // 'name'为字段名,需要明确制定
          $rs->MoveNext();
          或者
          //for ($i=0; $i < $num_columns; $i++)
          //{
                  //echo $fld[$i]->value . "/t";
          //}
          //echo "/n";
                  //$rs->MoveNext();
  }
  $rs->Close();      
  $conn->Close();
  $rs = null;
  $conn = null;
3、使用MSSQL_函数访问MSSQL SERVER的简单方法
  $hostname = "yourhoustname";
  $username = "yourusername";
  $password = "yourpassword";  
  $conn = mssql_connect($hostname,$username,$password) or die("DATABASE FAILED TO RESPOND.");
  //建立连接
  $dbName = "yourdatabase";
  $ret=mssql_select_db($dbName);   //选择数据库  
  $sqlstr = "select * from test";   //设置查询字符串
  $result=mssql_query($query);   //执行查询获得结果
  
  while($line = mssql_fetch_row($result))  //输出结果
  {
         echo "$line[0],$line[1]";   
         //mssql_fetch_row每次返回一个enumerated(列举) array,直到没有数据而返回false   
  }
  或者
        //while($row = mssql_fetch_array($result))
        //{
        //echo $row["name"];
        或者
        //echo $row[0],$row[1];
        //mssql_fetch_array每次返回一个数字索引数组或一个相关数组,直到没有数据而返回false
        //}

题外:
       关于通过PHP访问MSSQL SERVER的小结就是这些了。希望能对你有所帮助,第一次写又是初学,请你指出,共同进步。
求助:
       1、我在设置连接字符串的时候,为什么Data Soure为localhost或服务器名不行总是报错而为(local)或127.0.0.1却行,希望哪个高手帮我说明一下
       2、我在设置查询字符串的时候,如何对"LIKE '%-'"(单引号内为一个百分号和一个短横线)进行转义

[ 本帖最后由 maxy.feng 于 2007-3-5 17:40 编辑 ]
原创粉丝点击