学好PHP

一个数据库操作类(跨MYSQL,MSSQL,PG)

上一篇 / 下一篇  2008-02-17 13:32:26 / 个人分类:转载

<?PHP
/**********************************************************************************
            此类将数据库操作封装,具有良好的可移植性,针对数据库:mysql,mssql,pg
*原作者:Andrzej Manczyk 整理:玉面修罗 E-mail/msn:xiuluo-999@163.com 时间:2006-12-20*
************************************************************************************
// -函数清单 索引:
// - 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
*************************************************************************************/

ClassmDatabase
{
/***********************************成员变量定义***************************************/
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


/***********************************成员方法实现***************************************/
/************************************************************************************
 *连接数据库的函数
*************************************************************************************/

FunctionOpen($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;
}
/************************************************************************************
 *关闭数据库连接
*************************************************************************************/

FunctionClose()
{
 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;
}
/************************************************************************************
 *选择数据库
*************************************************************************************/

FunctionSelectDb($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;
}
/************************************************************************************
 *创建查询
*************************************************************************************/

FunctionQuery($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;
}
/************************************************************************************
 *移动记录指针
*************************************************************************************/

FunctionDataSeek($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;
}
/************************************************************************************
 *获取字段名
*************************************************************************************/

FunctionFieldName($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;
}
/************************************************************************************
 *获取字段类型
*************************************************************************************/

FunctionFieldType($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;
}
/************************************************************************************
 *获取字段长度
*************************************************************************************/

FunctionFieldLength($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;
}
/************************************************************************************
 *获取数据并保存到数组,可以用数字索引方式访问数组
*************************************************************************************/

FunctionFetchRow($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;
}
/************************************************************************************
*获取数据并保存到数组,可以用数字索引和关联索引的方式访问
*************************************************************************************/

FunctionFetchArray($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;
}
/************************************************************************************
 *获取数据并保存到对象
*************************************************************************************/

FunctionFetchObject($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;
}
/************************************************************************************
 *获取结果数据
*************************************************************************************/

FunctionResult($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;
}
/************************************************************************************
 *释放结果数据
*************************************************************************************/

FunctionFreeResult($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;
}
/************************************************************************************
 *获取记录数量
*************************************************************************************/

FunctionRowsNumber($result)
{
 Switch($this->dbType){
  Case"mssql":
   $r=mssql_num_rows($result);
   Break;
  Case"mysql":
   $r=mysql_num_rows($result);

TAG: 数据库 转载

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

数据统计

  • 访问量: 2350
  • 日志数: 24
  • 图片数: 1
  • 建立时间: 2007-04-04
  • 更新时间: 2008-04-17

RSS订阅

Open Toolbar