设计兵团展览设计论坛

QQ登录

只需一步,快速开始

查看: 2430|回复: 2

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

[复制链接]
发表于 2005-3-21 11:53:41 | 显示全部楼层 |阅读模式
  php程序来连接SQL Server数据库的通用类
     
     注意:php空间需要支持mssql模块
     很多朋友问我如何用php程序来连接SQL Server数据库的通用类,其实这个并不是很难的,关键是一点点仔细,一点点耐心,用激情去理解
     
    抽象,要是你激情耗尽了它还是什么都不像的话,那就麻烦了。以下是我的一点经验,而且有兴趣搞智能建站的朋友可以去这个网站看看( http://www.now.net.cn)这家公司很不错的,在珠海,叫时代互联。有些朋友可能已经知道。它一直是业内的领先者,技术力量很雄厚,主要业务是智能建站、域名申请、企业邮箱、主机租售等等。有兴趣的朋友可以登陆( http://www.now.net.cn )拨打全球免费服务电话咨询。言归正传
    <?
    class DB {
     var $Host = &quot;192.168.0.199&quot;; // Hostname of our MySQL server
     var $Database = &quot;test&quot;; // Logical database name on that server
     var $User = &quot;user&quot;; // Database user
     var $Password = &quot;password&quot;; // Database user&#39;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 = &quot;&quot;;
     
    var $AffNum=0;
     
    /**************************************
     *打印错误方法:显示页面处理的错误信息。
    ****************************************/
    function Halt($msg) {
     printf(&quot;</td></tr></table>Database error: %s
\n&quot;, $msg);
     printf(&quot;mssql Error: %s (%s)
\n&quot;,
     $this->Errno,
     $this->Error);
     die(&quot;Session halted.&quot;);
     }
     
    /**************************************
     *连接数据库,并且选择默认的数据库
     **************************************/
    function Connect() {
     if ( 0 == $this->Link_ID ) {
    $this->Link_ID=mssql_connect($this->Host,$this->User,$this->Password) or die(&quot;Couldn&#39;t connect to SQL Server on
     
    $servername&quot;);
    $db=@mssql_select_db($this->Database,$this->Link_ID);
     if (!$this->Link_ID) {
     $this->Halt(&quot;Link-ID == false, mssql_connect failed&quot;);
     }
     }
     }
     
    /****************************************
     *关闭数据库,如果数据库连接已经打开则关闭它
     *请在调用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==&quot;&quot;)
    {
    $this->AffNum=1;
    return 1;
    }
     
    if(strtolower(substr($Query_String,0,6))!=&quot;select&quot;){
    $this->AffNum=1;
    return 1;
    }
     
     $this->Errno = 1;
     $this->Error = &quot;General Error (The mssql interface cannot return detailed error messages)(&quot;.$msg.&quot;).&quot;;
     $this->halt(&quot;Invalid SQL: &quot;.$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(&quot;[0-9]&quot;,$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=&quot;select * from test&quot;;
    $DBConn->Query($SqlStr);
     
    //循环输出查询得到的结果
    while($Row=$DBConn->NextRecord()){
    echo $Row[testid];
    }
     
    //关闭数据库连接
    $DBConn->Close();
    ?>
     
    ----------------------------------------------------------------
    大家快到这里继续学习其他的知识: http://www.now.net.cn/support/
     
    提供免费咨询电话 : http://www.now.net.cn/customer/moreline.net
     
    大家懂了吗?懂了就要说懂,不懂就要说不懂,你不能懂了说你没懂
    没懂反而说懂了,懂就是懂,不懂就是不懂...哎呦,谁拿臭鸡蛋丢我?
    我话还没说完啊
发表于 2005-3-21 12:28:51 | 显示全部楼层
下面是引用yengff于2005-03-21 11:53发表的php程序来连接SQL Server数据库的通用类:
  php程序来连接SQL Server数据库的通用类
     
     注意:php空间需要支持mssql模块
     很多朋友问我如何用php程序来连接SQL Server数据库的通用类,其实这个并不是很难的,关键是一点点仔细,一点点耐心,用激情去理解
     
.......

你发错地方了吧,老大!
发表于 2005-3-21 12:36:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

设计兵团推荐上一条 /1 下一条

快速回复 返回顶部 返回列表