2005-05-28, 10:37 AM | #1 |
注册日期: 2005-05-28
帖子: 4
现金:8金币
资产:8金币
|
php程序来连接SQL Server数据库的通用类 ~~~~~
php程序来连接SQL Server数据库的通用类 ~~~~~ 注意:php空间需要支持mssql模块 很多朋友问我如何用php程序来连接SQL Server数据库的通用类,其实这个并不是很难的,关键是一点点仔细,一点点耐心,用激情去理解 抽象,要是你激情耗尽了它还是什么都不像的话,那就麻烦了。以下是我的一点经验,而且有兴趣搞智能建站的朋友可以去这个网站看看( http://www.now.net.cn)这家公司很不错的,在珠海,叫时代互联。有些朋友可能已经知道。它一直是业内的领先者,技术力量很雄厚,主要业务是智能建站、域名申请、企业邮箱、主机租售等等。有兴趣的朋友可以登陆( http://www.now.net.cn )拨打全球免费服务电话咨询。言归正传 <? 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"); $db=@mssql_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(); ?> |
|