PHP连接ACCESS数据库的类_[PHP教程]                                           					
  试过PHP连接ACCESS数据库没?这个用途不大,但有时候也用得着!我以前试图将一个ASP程序改写成PHP的,原程序的数据库设计得比较完善,我打算开发时就用它的ACCESS数据库 ,等程序完成后再转换。这个程序改写计划最终搁浅了,但此过程中为了方便连接ACCESS数据库,我写了个PHP连接ACCESS数据库的类,比较方便,希望有人用得着!


/*

    作者:夜无眠

    QQ:27262681


    ***本类只能在win平台的服务器上使用

*/

class access{

    function access(dir){ //构析函数,调用.com建立数据源,链接数据库;参数为数据库文件路径

        this->db=new com("adodb.connection");  

        this->db->open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=".realpath(dir));

    }

    function sql(sql){//参数为SQL查询语句

        if(preg_match("/limit +([0-9]*),([0-9]*)/",sql,out)){//正则分析sql语句,提取limit参数,模拟MYSQL的分页

            limit1=out[1];

            limit2=out[2];

            sql=preg_replace("/limit +([0-9]*),([0-9]*)/","",sql);

        }

        rs=this->db->execute(sql);

        if(strpos(sql,"select")===false or strpos(sql,"select")>5){//非查询语句直接返回空值,防止错误提示出现

            return "";

        }

        if(limit1==""){

            limit1=0;

        }

        if(limit2==""){//如果没有limit参数,设limit2为总记录数

            limit2=1000000;

        }

        rs->move(limit1);//记录指针移动到第limit1条记录处

        i=0;

        while(!rs->eof and i
            foreach(rs->fields as rss){
                rs_r[rss->name]=rss->value;
            }
            rs_rr[]=rs_r;
            rs->move(1);
            i++;
        }
        return rs_rr;
    }
    function getlist(db,p=""){//此函数用于将关联数组各元素处理成相关变量,第二个参数为变量名前缀,防止重名
        foreach(db as key=>dba){
            global {p.key};
            {p.key}=dba;
        }
    }
    function yasuo(dir){//压缩数据库函数,本函数用access::yasuo(dir);调用,dir为数据库文件路径,调用次函数之前必须将所有当前数据库的连接中断!
        ya =new com("JRO.JetEngine");
        truedir=realpath(dir);
        dirname=dirname(truedir);
        prov="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
        ya->CompactDatabase(prov.truedir,prov.dirname."/aatmp.mdb");//数据库所在目录必须有读写权限,否则会导致失败!
        unlink(truedir);
        rename(dirname."/aatmp.mdb",truedir);
    }
    function add(file){//新建一个ACCESS数据库 参数file为文件路径,必须为相对路径
        dir=dirname(_SERVER["SCRIPT_FILENAME"])."/".file;
        db=new com("ADOX.Catalog");  
        db->Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dir");
    }
}
?>不知道怎么用吧!下面有示例!
 
include("access.php"); 
access::add("my.mdb");//创建数据库 
db=new access("my.mdb");//连接数据库 
sql=<<
CREATE   TABLE   a   (     
id   AUTOINCREMENT(1,1),     
name   varchar(10)) 
eot; 
db->sql(sql);//建表 
sql=<<
insert into `a` (`name`) values('wo ri'); 
eot; 
db->sql(sql);//插入数据 
db->sql("insert into `a` (`name`) values('靠');"); 
sql="select * from a limit 1,1"; 
rs=db->sql(sql);//查询 
print_r(rs); 
?>