欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP连接MSSQL方法汇总

程序员文章站 2023-11-28 08:05:46
 为了能让php连接mssql,系统需要安装mssql,php,且在php.ini中的配置中,将 ;extension=php_mssql.dll前面的...

 为了能让php连接mssql,系统需要安装mssql,php,且在php.ini中的配置中,将 ;extension=php_mssql.dll前面的;去掉

1.连接mssql

  $conn=mssql_connect("实例名或者服务器ip","用户名","密码");

  //测试连接
  if($conn)
  {
  echo "连接成功";
  }

2.选择要连接的数据库      

 mssql_select_db("dbname");

3.执行查询

$rs = mssql_query("select top 1 id,username from tbname",$conn);
// 或者直接执行update,insert等语句,可以不用为返回结果赋值
mssql_query("update tbname set username='niunv' where id=1");

 4.获取记录集行数      

 echo mssql_num_rows($rs);

5.获取记录集     

 if($row=mssql_fetch_array($rs))
  {
  $id = $row[0];//获取id字段值
  $username = $row[1];//获取username字段值
  }

6.获取新增记录的id
       将id字段设置为identity字段,执行insert语句以后,就会产生一个 @@identity 全局变量值,查询出来就是最后一条新增记录的id了.

  mssql_query("insert into tbname(username) values ('nv')",$conn); 
  $rs = mssql_query("select @@identity as id",$conn);
  if($row=mssql_fetch_array($rs))
  {
  echo $row[0];
  }

7.释放记录集    

 mssql_free_result($rs);

 8.关闭连接    

 mssql_close($conn);  

       注:用php操作mssql比在asp连接mysql要简单,所以,当需要mssql与mysql并存时,用php连接mssql来操作mysql与mssql并存比较简单好用.如果是asp连接mysql,需要安装一个mysql驱动,默认windows的odbc没有安装,很遗憾...   

  •   在web服务器上至少安装了mssql的客户端    
  •   打开php.ini把;extension=php_mssql.dll   前面的分号去掉  
  •       有必要话:需要制定extension_dir  
  •   推荐使用   php<=4.0.9     <=5.0.3目前   我还没有连接成功过4.010和   5.0.3  
  •   数据库的 连接分页可以到phpe.net上获取到相应的class   

  下面是我修改的 一个class   

 <?php 
 /** 
 *mssql 数据库连接类 
 **/ 
 class sql{ 
 
 var $server; 
 var $username; 
 var $password; 
 var $database; 
 
 var $linkid = 0; 
 var $queryresult; 
 var $lastinsertid; 
 
 var $pagenum = 0;//分页用---共有几条数据 
 var $er; 
 
 /** 
 *构造函数 
 **/ 
 function  sql($server='',$username='',$password='',$database=''){ 
 $this->server = $server; 
 $this->username = $username; 
 $this->password = $password; 
 $this->database = $database; 
 } 
 /** 
 *数据库连接 
 **/ 
 function db_connect(){ 
 $this->linkid = mssql_pconnect($this->server,$this->username,$this->password); 
 if(!$this->linkid){ 
 $this->er = "db_connect($this->server,$this->username,$this->password) error"; 
 return 0; 
 } 
 if (!mssql_select_db($this->database,$this->linkid)) { 
 $this->er = "mssql_select_db($this->database,$this->lastinsertid) error"; 
 return 0; 
 } 
 return $this->linkid; 
 } 
 
 /**public 
 *  function: check the database, if exist then select 
 *  exist: return 1 
 *  not exist: return 0 
 */ 
 function selectdatabase(){ 
 if(mssql_select_db($this->database)) 
 return 1; 
 else 
 return 0; 
 } 
 
 /** 
 *数据操作 
 **/ 
 function  query($str){ 
 if ($this->linkid == 0) { 
 $this->er = "数据库还没有连接!!"; 
 } 
 
    $this->queryresult = mssql_query($str);  
 //$this->queryresult = mssql_query($str,$this->linkid); 
 if (!$this->queryresult) { 
  
 
 $this->er = "$str.没有操作成功,query error!!"; 
 return 0;//****************对于php 4.3.9以上版本的错误用1 
 } 
 return $this->queryresult; 
 } 
 
 /** 
 *数据获取 
 **/ 
 function fetch_array($result){ 
 if($result != "") $this->queryresult = $result; 
 $rec =mssql_fetch_array($this->queryresult); 
 
 if(is_array($rec)){ 
 return $rec; 
 
 } 
 
 //$this->er = "没有获取数据!"; 
 return 0; 
 } 
 
 /**public 
 *  function: free the query result 
 *  success return 1 
 *  failed: return 0 
 */ 
 function freeresult($result=""){ 
 if($result != "") $this->queryresult = $result; 
 return mssql_free_result($this->queryresult); 
 } 
   
 /** 
 *获取影响的的行数 
 *获取操作过的行数 
 **/ 
 function num_rows($result=""){ 
 if ($result != "") { 
 $this->queryresult = $result; 
 $row = mssql_num_rows($this->queryresult); 
 return $row; 
 } 
 } 
   
 /** 
 *获取查询结果---多个 
 **/ 
 function result_ar($str=''){ 
 if (empty($str)) { 
 return 0; 
 } 
 $back = array(); 
 $this->queryresult = $this->query($str); 
 
 while ($row = $this->fetch_array($this->queryresult)) { 
 $back[] = $row; 
 } 
 return $back; 
 } 
 
 /** 
 *数据库信息分页 
 *$result 数据库操作 
 *str ==sql语句  
 *page ==第几页 
 *shownum ==显示几页 
 */ 
 function page($str,$page=0,$shownum=5){ 
 $back = array();//返回数据 
 $maxnum = 0; 
 if ($str == "") { 
 $this->er = "没有数据"; 
 return  0; 
 } 
 $this->queryresult = $this->query($str); 
 if($this->queryresult){ 
 if($page==""){ 
 $nopa=0; 
 }else{ 
 $nopa = ($page-1)*$shownum; 
 if ($nopa<0) { 
 $nopa = 0; 
 } 
 } 
 $maxnum=$this->num_rows($this->queryresult); 
 $k=0; 
 $i=0; 
 $dd=$this->fetch_array($this->queryresult); 
 
 while($dd&&$nopa<=$maxnum&&$i<$shownum){ 
 if($nopa >= $maxnum)  $nopa = $maxnum; 
 mssql_data_seek($this->queryresult,$nopa); 
 
 $row=$this->fetch_array($this->queryresult); 
 
 $nopa++; 
 $i++; 
 $back[] = $row; 
 
 if ($nopa >=$maxnum) { 
 break; 
 } 
 } 
 } 
 $this->pagenum = $maxnum; 
 return $back; 
 } 
 
 /** 
 *分页的html页码 
 */ 
 function  page_html($datanum=0,$page=1,$shownum=3,$web,$post=''){ 
 if ($datanum == 0) { 
 $back =  "没有要查询的数据"; 
 }else { 
 if ($shownum<=0) { 
 $shownum = 3; 
 } 
 if ($page<=0) { 
 $page = 1; 
 } 
 if (empty($web)) { 
 $web = "#"; 
 } 
 $pagenum = ceil($datanum/$shownum); 
 if ($page <= 1) { 
 $top =  "首页<<"; 
 }else { 
 $top = "<a href='".$web."?page=0&".$post."' target='_self'>首页<< </a>"; 
 } 
 if ($page !==1) { 
 $uppage =  "<a href='".$web."?page=".($page-1)."&".$post."' target='_self'>上一页</a>"; 
 }else { 
 $uppage = "上一页"; 
 } 
 if ($page < $pagenum) { 
 $downpage = "<a href='".$web."?page=".($page+1)."&".$post."' target='_self'>下一页</a>"; 
 }else { 
 $downpage = "下一页"; 
 } 
 if ($page == $pagenum) { 
 $foot = ">>尾页"; 
 }else { 
 $foot = "<a href='".$web."?page=".$pagenum."&".$post."' target='_self'> >>尾页</a>"; 
 } 
 
 $back = <<<eot 
 
 共 $pagenum 页    
 第 $page/$pagenum 页 $top   $uppage   $downpage    $foot 
 eot; 
 } 
 return $back; 
 } 
 }//end class 
 ?>

以上就是php连接mssql方法的总结,希望对大家的学习有所帮助。