A-A+

php操作access数据库类

2013年09月01日 PHP技术文章 评论 5 条 阅读 229 views 次

在开发 PHP 程序时,我们基本上都会选择 Mysql 作为网站数据库的,因为众所周知,Mysql 是 PHP 的黄金搭档,使用 Mysql 无论是在性能上,还是在安全上,绝对是独一无二的。

当然,因为 PHP 的开源和扩展性,PHP 所支持的数据库不仅仅只有 Mysql,它支持几乎所有的网站数据库,有的时候,我们使用别的数据库,可能在性价比上会更好一点,在小型的网站应用中就可以使用 Access 数据库,甚至可以直接使用 TXT 文本作为数据库,这样可以节省购买数据库的成本,而且在管理上也非常方便。

下面是一个 PHP 操作 Access 数据库的类,囊括了最基本的 PHP 操作 Access 数据库的方法,除了简单的类构造和销毁等方法,还包括了 Access 数据库的增删改查等常用功能,下面是源代码:

<?php 
class mdbclass{
    public $mdbpath;//数据库名称
    public $mdbuser;//数据库登录用户名
    public $mdbpass;//数据库登录密码
    public $conn;
    public $debug = false;//是否启用调试
 
    //类的构造
    function __construct($name,$user='',$pass=''){
        $this->mdbpath=$name;
        $this->mdbuser=$user;
        $this->mdbpass=$pass;
        $this->conn = new com('ADODB.Connection');
        $connstr='DRIVER={Microsoft Access Driver (*.mdb)}; DB
Q='.realpath($this->mdbpath).';password='.$this->mdbpass.';Us
er ID='.$this->mdbuser.'';
        try{
            $this->conn->Open($connstr);
        }catch(Exception $e){
            die($e->getMessage());
        }
    }
 
    //类的销毁
    function __destruct(){
        $this->close();
    }
 
    function fileexi($mdbpath){
        $path=$mdbpath;
        if(!file_exists($mdbpath)){
            $path= '../'.$mdbpath.'';
        }
        return $path;    
    }
 
    function close(){
        $this->conn->close();
    }
    function query($sql){
        try{
            return $this->conn->execute($sql);
        }catch(Exception $e){
            die('执行有误:'.$sql.'');
        }
    }    
    function getone($table,$where,$fields='*'){//获取某一行
        $sql='select top 1 '.$fields.' from `'.$table.'` wher
e '.$where.'';
        $rs=$this->query($sql);
        if(!$rs->eof){
            for($i=0;$i<$rs->fields->count;$i++){
                $arrv[$rs->fields[$i]->name]=$rs->fields[$i]->v
alue;
            }
            $rs->close();
            return $arrv;
        }else{
            return false;
        }
    }
    function getmou($table,$fields,$where){
        $sql='select `'.$fields.'` from `'.$table.'` where '.$w
here.'';
        $rs=$this->query($sql);
        if(!$rs->eof){
            return $rs[0]->value;
        }else{
            return false;
        }
    }
    function getall($sql,$n=''){
        $rs=$this->query($sql);
        $arr=array();$c=0;
        if(!$rs->eof){
            while(!$rs->eof){    
                if($n!=''){if($c>=$n)break;}
                for($i=0;$i<$rs->fields->count;$i++){
                    $arrv[$rs->fields[$i]->name]=$rs->fields[$i]->v
alue;
                }
                $arr[]=$arrv;
                $rs->movenext;
                $c++;
            }
            $rs->close();
        }
        return $arr;
    }
    function rows($table,$where,$rowtype='count(*)'){
        $sql='select '.$rowtype.' from `'.$table.'` where '.$where.'';
        $rs=$this->query($sql);
        if(!$rs->eof){
            $val=$rs[0]->value;
            $rs->close();
            return $val;
        }else{
            return false;
        }        
    }
    function insert($table,$fields,$values){//插入数据
        $sql="insert into `".$table."`(".$fields.")values(".$values.")";
        return $this->query($sql);
    }
    function update($table,$content,$where){//更新
        $sql="update `".$table."` set ".$content." where ".$where." ";
        return $this->query($sql);
    }    
    function delete($table,$where){//删除操作
        $sql="delete from `".$table."` where ".$where." ";
        return $this->query($sql);
    }
    function getalltable(){ //返回所有数据库的表
        $rs=$this->conn->OpenSchema(20);
        while(!$rs->eof){
            if($rs[3]=='TABLE'||$rs[3]=='VIEW'){
                $arrd[]=$rs[2]->value;
            }
            $rs->movenext;
        }
        $rs->close();
        return $arrd;
    }
    function getallfields($table){ //返回表所有字段
        $sql='select * from `'.$table.'`';
        $rs=$this->query($sql);
        for($i=0;$i<$rs->fields->count;$i++){
            $arr[]=$rs->fields[$i]->name;
        }
        $rs->close();
        return $arr;
    }
    function getlimit($sql,$page,$fen=25){//分页
        $rs = new com("ADODB.RecordSet");
        $rs->Open($sql,$this->conn,3,1);
        $fen=intval($fen);$page=intval($page);
        $arr=array();
        $zong=$rs->recordcount;
        if(!$rs->eof&&$zong>=0){
            $rs->pagesize=$fen;
            $max=$rs->pagecount;
            if($page<=0)$page=1;
            if($page>$max)$page=$max;
            $rs->absolutepage=$page;
            for($t=1;$t<=$fen;$t++){
                for($i=0;$i<$rs->fields->count;$i++){
                    $arrv[$rs->fields[$i]->name]=$rs->fields[$i]->value;
                }
                $arr[]=$arrv;
                $rs->movenext;
                if($rs->eof)break;
            }
            $rs->close();
        }
        return $arr;
    }
 
}
define('mdbpath','数据库路径.mdb');
$mdb=new mdbclass(mdbpath,'管理','数据库密码');//链接数据库
?>
标签:

5 条留言  访客:5 条  博主:0 条

  1. 社新社

    TXT很霸气!

  2. peascloud

    .txt 怎么做?求指教。

    • smiling

      txt 的直接用操作文本函数进行操作。

  3. 爱浮夸

    主要看什么类型的服务器,什么样的服务器就搭什么样的数据库,PHP只是个壳。

  4. 21氪

    我博客就是这个数据库

给我留言