现在的位置: 首页 > 综合 > 正文

php使用ADODB

2013年09月10日 ⁄ 综合 ⁄ 共 3125字 ⁄ 字号 评论关闭

前些日子,一直在网上找php怎么连接sql server2005找了好久,没找到,也在百度知道上问了好久,还是
没人知道呵呵最后让在无意间发现连接sql server2005的办法,还漫好用的.今天发布在网上就想与让大家分享
让与我一样的朋友们不要像我一样苦苦地找.下面就说说怎么与sql server2005连接

  其实连接sql server2005很简单的,就是用到php的COM对象.在php手册上也有介绍.    

  $myDSN="Provider=SQLNCLI.1;Persist Security Info=True;Data Source=$server;User ID=$dbname;Password=$dbpass;Initial Catalog=$database";
         $conn=new COM('ADODB.Connection');
        $conn->open($myDSN);

就这样一句就可以与sql server2005连接了,若是会ASP的朋友这个应该中比较熟悉的哈

      首先运用:$conn=new COM('ADODB.Connection');创建一个conn对象,我们可以完全用ASP的方法
来写的,只是语法有点区别罢了.然后在用户open 方法来打开一个连接,由于sql server2005与sql server2000
的驱动不一样,sql server 2000的驱动为sqloledb,而sql server2005缺完全不一样为SQLNCI.1,在连接之前如果
你的sql server2005在本地连接与就是localhost那就不用管如不是请确认你的sql server2005是否开启了远程连
接,因为sql server 2005默认是不允许远程连接的.如何开启请点击:开始->程序->Micrsoft SQL server 2005->
配置工具->外围应用与管理器->服务和连接的外围应用配置器->远程服务->选择本地连接和远程连接->再选择同时
使用TCP/IP和named pipes
  呵呵,下面我在执行SQL语句,我可用Execute来执行sql语句或ADODB.Recordset,下面我们先用Execute
来执行,
    呵呵,小马哥与弄好久才弄明白,不明白的可以慢慢来

                     假如我已经建立了一张表名为user
                          $conn=new COM('ADODB.Connection') or die('连接错误');
                          $myDSN="Provider=SQLNCLI.1;Persist Security Info=True;Data Source=localhost;User ID=dbname;Password=dbpass;Initial Catalog=database";
                          $conn->open($myDSN) or die('连接语句无效');
                          $sql="select * from [user]";
                          $rs=$conn->execute($sql);
                          if($rs->eof()){
                                 print('没有任何数据');

                           }else{
                                             while(!$rs->eof()){
                                                   echo $rs->fields[0]->value;
                                                   $rs->movenext();

                                               }

                                     }
  呵呵是不是看起来与ASP操作一样的三,其它ASP的操作的方法这里好像都能用
  这看看ADODB.Recordset

   $conn=new COM('ADODB.Connection') or die('连接错误');
                          $myDSN="Provider=SQLNCLI.1;Persist Security Info=True;Data Source=localhost;User ID=dbname;Password=dbpass;Initial Catalog=database";
                          $conn->open($myDSN) or die('连接语句无效');
                          $rs=new COM('ADODB.Recordset');
                          $sql="select * from [user]";
                          $rs->open($sql,$conn,1,3);
                          if($rs->eof()){
                                 print('没有任何数据');

                           }else{
                                             while(!$rs->eof()){
                                                   echo $rs->fields(0)->value;
                                                   $rs->movenext();

                                               }

                                     }

呵呵,就是一点点区别,对了我们在ASP中获取一个字段的值如:rs("Username")就可以得到,在php中也可以
如:$rs['username']也可以得到值,但是要注意一个问题,这样如有其中有一项为NULL值,那php就会报这
样的错误:Catchable fatal error: Object of class variant could not be converted to string in E:/Web/wwwroot/teaweb/Teahouses/Include/index.class.php.cs on line 100
           如果想用is_null或empty来判断那是判断不到的,而其还报错的更历害.怎么解决呢?
呵呵不如慌,要这样如要获取的字段名为username那就这样来测式它是不是为NULL

 if( $rs->fields('username')->value==NULL){
     echo '为NULL';
 }else{
   echo '不为NULL';
}

这样就有效的判断它是否为NULL了

 

抱歉!评论已关闭.