• 技术文章 >php教程 >php手册

    php实现可用于mysql,mssql,pg数据库操作类,mysqlmssql

    2016-06-13 09:18:57原创476

    php实现可用于mysql,mssql,pg数据库操作类,mysqlmssql


    本文实例讲述了可用mysql,mssql,pg三种数据库的数据库操作类,你只要作任何修改就可以方便的改变你数据库的类型.分享给大家供大家参考。具体分析如下:

    函数清单,索引:

    Open:打开数据库连接 Line:71
    Close:关闭数据库连接 Line:107
    SelectDB:选择数据库 Line:129
    Query:创建查询 Line:151
    DataSeek:移动记录指针 Line:175
    FieldName:获取字段名称 Line:198
    FieldType:获取字段类型 Line:220
    FieldLenght:获取字段长度 Line:242
    FetchRow:获取数据并保存到数组(数字索引) Line:264
    FetchArray:获取数据并保存进数组(数字和关联) Line:289
    FetchObject:获取数据并保存到对象(对象方式) Line:315
    Result:获取结果数据 Line:341
    FreeResult:刷新记录集 Line:363
    RowsNumber:获取记录数量 Line:385
    FieldsNumber:获取字段数量 Line:407
    CurRecNumber:获取当前记录号(从0开始) Line:429
    RecordNumber:获取当前行号(从1开始) Line:438
    MoveFirstRec:移动到第一条记录 Line:447
    MoveLastRec:移动到最后一条记录 Line:469
    MovePreviousRec:移动到前一条记录 Line:495
    MoveNextRec:移动到下一条记录 Line:521
    MoveToRec:移动到一个特定的记录(从1开始) Line:548

    php数据库操作类代码如下:

    复制代码 代码如下:

    <?PHP
    /**********************************************************************************
    此类将数据库操作封装,具有良好的可移植性,针对数据库:mysql,mssql,pg
    ************************************************************************************
    // -函数清单 索引:
    // - Open: 打开数据库连接 Line:71
    // - Close: 关闭数据库连接 Line:107
    // - SelectDB: 选择数据库 Line:129
    // - Query: 创建查询 Line:151
    // - DataSeek: 移动记录指针 Line:175
    // - FieldName: 获取字段名称 Line:198
    // - FieldType: 获取字段类型 Line:220
    // - FieldLenght: 获取字段长度 Line:242
    // - FetchRow: 获取数据并保存到数组(数字索引) Line:264
    // - FetchArray: 获取数据并保存进数组(数字和关联) Line:289
    // - FetchObject: 获取数据并保存到对象(对象方式) Line:315
    // - Result: 获取结果数据 Line:341
    // - FreeResult: 刷新记录集 Line:363
    // - RowsNumber: 获取记录数量 Line:385
    // - FieldsNumber: 获取字段数量 Line:407
    // - CurRecNumber: 获取当前记录号(从0开始) Line:429
    // - RecordNumber: 获取当前行号(从1开始) Line:438
    // - MoveFirstRec: 移动到第一条记录 Line:447
    // - MoveLastRec: 移动到最后一条记录 Line:469
    // - MovePreviousRec: 移动到前一条记录 Line:495
    // - MoveNextRec: 移动到下一条记录 Line:521
    // - MoveToRec: 移动到一个特定的记录(从1开始) Line:548
    ************************************************************************************
    //Inputs:
    // - dbType: databases type: mssql, mysql, pg
    // - connectType: connection type: c - common connection,
    // p - open persistent connection
    // - connect: for MS SQL Server - server name,
    // for MySQL - hostname [:port] [:/path/to/socket] ,
    // for PostgreSQL - host, port, tty, options,
    // dbname (without username and password)
    // - username
    // - password
    // - dbName: database name
    // - query: SQL query
    // - result: result set identifier
    // - RowNumber:
    // - offset: field identifier
    // - ResultType: a constant and can take the following values: PGSQL_ASSOC, PGSQL_NUM, and PGSQL_BOTH
    // - FieldName
    //
    //Returns:
    // - result: result set identifier
    // - connect link identifier
    // - record number (starting at 0: CurrRecNumber or starting at 1: RecordNumber)
    // - number of fields in the specified result set
    // - number of rows in the specified result set
    *************************************************************************************/
    Class mDatabase
    {
    /***********************************成员变量定义***************************************/
    var $dbType; // 数据库类型: mssql, mysql, pg
    var $connectType; // 连接类型: c - common connection, p - open persistent connection
    var $idCon; // 连接号
    var $curRow; // current row number of data from the result
    // associated with the specified result identifier array
    var $seek; // current row number of data from DataSeek function array

    /***********************************成员方法实现***************************************/
    /************************************************************************************
    *连接数据库的函数
    *************************************************************************************/
    Function Open($dbType, $c, $connect, $username = "", $password = "")
    {
    $this->dbType = $dbType;
    Switch ($dbType) {
    Case "mssql":
    If ($connectType == "c") {
    $idCon = mssql_connect($connect, $username, $password);
    } Else {
    $idCon = mssql_pconnect($connect, $username, $password);
    }
    Break;
    Case "mysql":
    If ($connectType == "c") {
    $idCon = mysql_connect($connect, $username, $password);
    } Else {
    $idCon = mysql_pconnect($connect, $username, $password);
    }
    Break;
    Case "pg":
    If ($connectType == "c") {
    $idCon = pg_connect($connect . " user=" . $username . " password=" . $password);
    } Else {
    $idCon = pg_pconnect($connect . " user=" . $username . " password=" . $password);
    }
    Break;
    Default:
    $idCon = 0;
    Break;
    }
    $this->idCon = $idCon;
    Return $idCon;
    }
    /************************************************************************************
    *关闭数据库连接
    *************************************************************************************/
    Function Close()
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_close($this->idCon);
    Break;
    Case "mysql":
    $r = mysql_close($this->idCon);
    Break;
    Case "pg":
    $r = pg_close($this->idCon);
    Break;
    Default:
    $r = False;
    Break;
    }
    Return $r;
    }
    /************************************************************************************
    *选择数据库
    *************************************************************************************/
    Function SelectDb($dbName)
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_select_db($dbName);
    Break;
    Case "mysql":
    $r = mysql_select_db($dbName);
    Break;
    Case "pg":
    $r = False;
    Break;
    Default:
    $r = False;
    Break;
    }
    Return $r;
    }
    /************************************************************************************
    *创建查询
    *************************************************************************************/
    Function Query($query)
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_query($query, $this->idCon);
    Break;
    Case "mysql":
    $r = mysql_query($query, $this->idCon);
    Break;
    Case "pg":
    $r = pg_exec($this->idCon, $query);
    Break;
    Default:
    $r = False;
    Break;
    }
    $this->curRow[$r] = 0;
    $this->seek[$r] = 0;
    Return $r;
    }
    /************************************************************************************
    *移动记录指针
    *************************************************************************************/
    Function DataSeek($result, $RowNumber)
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_data_seek($result, $RowNumber);
    Break;
    Case "mysql":
    $r = mysql_data_seek($result, $RowNumber);
    Break;
    Case "pg":
    $r = False;
    Break;
    Default:
    $r = False;
    Break;
    }
    $this->seek[$result] = (int) $RowNumber;
    Return $r;
    }
    /************************************************************************************
    *获取字段名
    *************************************************************************************/
    Function FieldName($result, $offset)
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_field_name($result, $offset);
    Break;
    Case "mysql":
    $r = mysql_field_name($result, $offset);
    Break;
    Case "pg":
    $r = pg_fieldname($result, $offset);
    Break;
    Default:
    $r = False;
    Break;
    }
    Return $r;
    }
    /************************************************************************************
    *获取字段类型
    *************************************************************************************/
    Function FieldType($result, $offset)
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_field_type($result, $offset);
    Break;
    Case "mysql":
    $r = mysql_field_type($result, $offset);
    Break;
    Case "pg":
    $r = pg_fieldtype($result, $offset);
    Break;
    Default:
    $r = False;
    Break;
    }
    Return $r;
    }
    /************************************************************************************
    *获取字段长度
    *************************************************************************************/
    Function FieldLength($result, $offset)
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_field_length($result, $offset);
    Break;
    Case "mysql":
    $r = mysql_field_len($result, $offset);
    Break;
    Case "pg":
    $r = pg_fieldsize($result, $offset);
    Break;
    Default:
    $r = False;
    Break;
    }
    Return $r;
    }
    /************************************************************************************
    *获取数据并保存到数组,可以用数字索引方式访问数组
    *************************************************************************************/
    Function FetchRow($result, $RowNumber = 0)
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_fetch_row($result);
    Break;
    Case "mysql":
    $r = mysql_fetch_row($result);
    Break;
    Case "pg":
    $r = pg_fetch_row($result, $RowNumber);
    If ($r) {
    $this->curRow[$result] = $RowNumber;
    $this->seek[$result] = $RowNumber;
    }
    Break;
    Default:
    $r = False;
    Break;
    }
    Return $r;
    }

    /************************************************************************************
    *获取数据并保存到数组,可以用数字索引和关联索引的方式访问
    *************************************************************************************/
    Function FetchArray($result, $RowNumber = 0, $ResultType = 2)
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_fetch_array($result);
    Break;
    Case "mysql":
    $r = mysql_fetch_array($result);
    Break;
    Case "pg":
    $r = pg_fetch_array($result, $RowNumber, $ResultType);
    If ($r) {
    $this->curRow[$result] = $RowNumber;
    $this->seek[$result] = $RowNumber;
    }
    Break;
    Default:
    $r = False;
    Break;
    }
    Return $r;
    }
    /************************************************************************************
    *获取数据并保存到对象
    *************************************************************************************/
    Function FetchObject($result, $RowNumber = 0, $ResultType = 2)
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_fetch_object($result);
    Break;
    Case "mysql":
    $r = mysql_fetch_object($result);
    Break;
    Case "pg":
    $r = pg_fetch_object($result, $RowNumber, $ResultType);
    If ($r) {
    $this->curRow[$result] = $RowNumber;
    $this->seek[$result] = $RowNumber;
    }
    Break;
    Default:
    $r = False;
    Break;
    }
    Return $r;
    }
    /************************************************************************************
    *获取结果数据
    *************************************************************************************/
    Function Result($result, $RowNumber, $FieldName)
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_result($result, $RowNumber, $FieldName);
    Break;
    Case "mysql":
    $r = mysql_result($result, $RowNumber, $FieldName);
    Break;
    Case "pg":
    $r = pg_result($result, $RowNumber, $FieldName);
    Break;
    Default:
    $r = False;
    Break;
    }
    Return $r;
    }
    /************************************************************************************
    *释放结果数据
    *************************************************************************************/
    Function FreeResult($result)
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_free_result($result);
    Break;
    Case "mysql":
    $r = mysql_free_result($result);
    Break;
    Case "pg":
    $r = pg_freeresult($result);
    Break;
    Default:
    $r = False;
    Break;
    }
    Return $r;
    }
    /************************************************************************************
    *获取记录数量
    *************************************************************************************/
    Function RowsNumber($result)
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_num_rows($result);
    Break;
    Case "mysql":
    $r = mysql_num_rows($result);
    Break;
    Case "pg":
    $r = pg_numrows($result);
    Break;
    Default:
    $r = False;
    Break;
    }
    Return $r;
    }
    /************************************************************************************
    *获取字段数量
    *************************************************************************************/
    Function FieldsNumber($result)
    {
    Switch ($this->dbType) {
    Case "mssql":
    $r = mssql_num_fields($result);
    Break;
    Case "mysql":
    $r = mysql_num_fields($result);
    Break;
    Case "pg":
    $r = pg_numfields($result);
    Break;
    Default:
    $r = False;
    Break;
    }
    Return $r;
    }
    /************************************************************************************
    *获取当前记录号(从0开始)
    *************************************************************************************/
    Function CurRecNumber($result)
    {
    $r = $this->curRow[$result];
    Return $r;
    }
    /************************************************************************************
    *获取当前行号(从1开始)
    *************************************************************************************/
    Function RecordNumber($result)
    {
    $cr = $this->CurRecNumber($result) + 1;
    Return $cr;
    }
    /************************************************************************************
    *移动到第一条记录
    *************************************************************************************/
    Function MoveFirstRec($result)
    {
    Switch ($this->dbType) {
    Case "pg":
    $r = $this->FetchRow($result, 0);
    Break;
    Default:
    $rn = $this->DataSeek($result, 0);
    If ($rn) {
    $r = $this->FetchRow($result);
    If ($r) $this->curRow[$result] = $this->seek[$result];
    } Else {
    $r = False;
    }
    Break;
    }
    Return $r;
    }
    /************************************************************************************
    *移动到最后一条记录
    *************************************************************************************/
    Function MoveLastRec($result)
    {
    $rs = $this->RowsNumber($result);
    If ($rs) {
    $rs--;
    Switch ($this->dbType) {
    Case "pg":
    $r = $this->FetchRow($result, $rs);
    Break;
    Default:
    $rn = $this->DataSeek($result, $rs);
    If ($rn) {
    $r = $this->FetchRow($result);
    If ($r) $this->curRow[$result] = $this->seek[$result];
    } Else {
    $r = False;
    }
    Break;
    }
    }
    Return $r;
    }
    /************************************************************************************
    *移动到前一条记录
    *************************************************************************************/
    Function MovePreviousRec($result)
    {
    $rs = $this->CurRecNumber($result);
    If ($rs) {
    $rs--;
    Switch ($this->dbType) {
    Case "pg":
    $r = $this->FetchRow($result, $rs);
    Break;
    Default:
    $rn = $this->DataSeek($result, $rs);
    If ($rn) {
    $r = $this->FetchRow($result);
    If ($r) $this->curRow[$result] = $this->seek[$result];
    } Else {
    $r = False;
    }
    Break;
    }
    }
    Return $r;
    }
    /************************************************************************************
    *移动到下一条记录
    *************************************************************************************/
    Function MoveNextRec($result)
    {
    $rs = $this->CurRecNumber($result);
    $rn = $this->RowsNumber($result);
    $rs++;
    If ($rs != $rn) {
    Switch ($this->dbType) {
    Case "pg":
    $r = $this->FetchRow($result, $rs);
    Break;
    Default:
    $re = $this->FetchRow($result);
    If ($re) {
    $r = $re;
    $this->curRow[$result]++;
    $this->seek[$result] = $this->curRow[$result];
    } Else {
    $r = False;
    }
    Break;
    }
    }
    Return $r;
    }
    /************************************************************************************
    *移动到指定记录(编号从0开始)
    *************************************************************************************/
    Function MoveToRec($result, $RowNumber)
    {
    $rn = $this->RowsNumber($result);
    If ($RowNumber > 0 And $RowNumber < $rn) {
    $RowNumber--;
    Switch ($this->dbType) {
    Case "pg":
    $r = $this->FetchRow($result, $RowNumber);
    Break;
    Default:
    $rn = $this->DataSeek($result, $RowNumber);
    If ($rn) {
    $r = $this->FetchRow($result);
    If ($r) $this->curRow[$result] = $this->seek[$result];
    } Else {
    $r = False;
    }
    Break;
    }
    }
    Return $r;
    }
    }
    //********************************方法实现完毕****************************************//
    ?>

    希望本文所述对大家的PHP数据库程序设计有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 数据库 mysql
    上一篇:php中get_meta_tags()、CURL与user-agent用法分析,curlagent 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • php批量添加数据与批量更新数据的实现方法,php添加数据• PHP代码:Http断点续传的实现例子• PHP5中Cookie与 Session使用详解• php实现文件下载更能介绍• php写的简易聊天室代码
    1/1

    PHP中文网