php操作access数据库类
在开发 PHP 程序时,我们基本上都会选择 Mysql 作为网站数据库的,因为众所周知,Mysql 是 PHP 的黄金搭档,使用 Mysql 无论是在性能上,还是在安全上,绝对是独一无二的。
当然,因为 PHP 的开源和扩展性,PHP 所支持的数据库不仅仅只有 Mysql,它支持几乎所有的网站数据库,有的时候,我们使用别的数据库,可能在性价比上会更好一点,在小型的网站应用中就可以使用 Access 数据库,甚至可以直接使用 TXT 文本作为数据库,这样可以节省购买数据库的成本,而且在管理上也非常方便。
下面是一个 PHP 操作 Access 数据库的类,囊括了最基本的 PHP 操作 Access 数据库的方法,除了简单的类构造和销毁等方法,还包括了 Access 数据库的增删改查等常用功能,下面是源代码:
[code lang="php"]
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,'管理','数据库密码');//链接数据库
?>
[/code]