首页 > php与数据库 > PHP程序来连接SQLServer数据库的通用类

PHP程序来连接SQLServer数据库的通用类

很多朋友问我如何用php程序来连接SQL Server数据库的通用类,其实这个并不是很难的,要害是一点点仔细,一点点耐心,用激情去理解

<?php
class DB {
    var $Host = "192.168.1.3"; // Hostname of our MySQL server
    var $Database = "db_dbname"; // Logical database name on that server
    var $User = "dbUser"; // Database user
    var $Password = "UserPassword"; // Database users 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("Couldnt 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;
        }
    }
}
?>


应用举例:

<?php
include "class/mssql_db_class.php";
//构造新的DB类
$DBConn = new DB;
//写入sql查询语句
$SqlStr = "select * from tb_tableName";
$DBConn->Query($SqlStr);
//循环输出查询得到的结果
while ($Row = $DBConn->NextRecord()) {
    echo $Row[news_title];
}
//关闭数据库连接
$DBConn->Close();
?>


永久链接:http://www.phprm.com/database/570ca94ce693b6f90e1a267163b78a7f.html

转载随意!带上文章地址吧。

标签:none

发表留言