首页 > 开发 > PHP > 正文

php程序来连接SQL Server数据库的通用类

2024-05-04 23:04:29
字体:
来源:转载
供稿:网友
  很多朋友问我如何用php程序来连接sql server数据库的通用类,其实这个并不是很难的,关键是一点点仔细,一点点耐心,用激情去理解
<?
  class db {
   var $host = "192.168.0.199"; // hostname of our mysql server
   var $database = "test"; // logical database name on that server
   var $user = "user"; // database user
   var $password = "password"; // database user's password
  
   var $link_id = 0; // result of mssql_connect()
   var $query_id = 0; // result of most recent mssql_query()
   var $row = 0; // current row number
   var $errno = 0; // error state of query
   var $error = "";
  
  var $affnum=0;
  
  /**************************************
   *打印错误方法:显示页面处理的错误信息。
  ****************************************/
  function halt($msg) {
   printf("</td></tr></table><b>database error:</b> %s<br>/n", $msg);
   printf("<b>mssql error</b>: %s (%s)<br>/n",
   $this->errno,
   $this->error);
   die("session halted.");
   }
  
  /**************************************
   *连接数据库,并且选择默认的数据库
   **************************************/
  function connect() {
   if ( 0 == $this->link_id ) {
  $this->link_id=mssql_connect($this->host,$this->user,$this->password) or die("couldn't connect to sql server on
  
  $servername");
  database,$this->link_id">$[email protected]_select_db($this->database,$this->link_id);
   if (!$this->link_id) {
   $this->halt("link-id == false, mssql_connect failed");
   }
   }
   }
  
  /****************************************
   *关闭数据库,如果数据库连接已经打开则关闭它
   *请在调用connect()并处理后使用close()
   ****************************************/
  function close() {
  if (0 != $this->link_id){
  mssql_close();
  }
  }
  
  /*************************************************
   *输入sql语句,有select,update,insert,delete
   *包括存储过程也可以通过这个方法来调用。
   *************************************************/
  function query($query_string) {
   $this->connect();
  
   $this->query_id = mssql_query($query_string);
   $this->row = 0;
   if (!$this->query_id) {
  $msg=mssql_get_last_message();
  
  if($msg==null || $msg=="")
  {
  $this->affnum=1;
  return 1;
  }
  
  if(strtolower(substr($query_string,0,6))!="select"){
  $this->affnum=1;
  return 1;
  }
  
   $this->errno = 1;
   $this->error = "general error (the mssql interface cannot return detailed error messages)(".$msg.").";
   $this->halt("invalid sql: ".$query_string);
   }
   return $this->query_id;
   }
  
  /*******************************************************
   *把查询数据库的指针移到下一条记录
   *******************************************************/
  function nextrecord() {
   $this->record = array();
  mssql_next_result($this->query_id);
  $this->record=mssql_fetch_array($this->query_id);
  
  $result=$this->record;
  if(!is_array($result)) return $this->record;
  foreach($result as $key => $value){
  $keylower=strtolower($key);
  if($keylower!=$key) $this->record[$keylower]=$value;
  }
  
   return $this->record;
   }
  
  /********************************************************
   *重新定位查询数据库的指针
   ********************************************************/
  function seek($pos) {
  if($pos<=0) return;
  if(eregi("[0-9]",$pos)) mssql_data_seek($this->query_id,$pos);
   }
  
  /********************************************************
   *获取查询数据库得到的总行数
   ********************************************************/
  function numrows() {
  if($this->query_id) $num_rows=mssql_num_rows($this->query_id);
  else $num_rows=$this->affnum;
  
   return $num_rows;
   }
  
  /*******************************************************
   *字段数
   *******************************************************/
  function numfields() {
   return count($this->record)/2;
   }
  
  /*******************************
   *该字段的值
   *******************************/
  function fieldvalue($field_name){
  return $this->record[$field_name];
   }
  
  /******************************
   *update,insert,delete影响的行数
   ******************************/
  function affectedrows() {
  if($this->query_id) return mssql_num_rows($this->query_id);
  else{
  return $this->affnum;
  }
   }
  ?>
  
  
  以下是使用示例:
  
  <?
  //构造新的db类
  $dbconn=new db;
  
  //写入sql查询语句
  $sqlstr="select * from test";
  $dbconn->query($sqlstr);
  
  //循环输出查询得到的结果
  while($row=$dbconn->nextrecord()){
  echo $row[testid];
  }
  
  //关闭数据库连接
  $dbconn->close();
  ?>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表