找回密码
 注册
搜索
热搜: 回贴

PHP+Access连接方法(类实现)

2010-1-31 08:07| 发布者: admin| 查看: 61| 评论: 0|原作者: 琴姬

//adodb.php
class ADODB_ACCESS
{
var $Uid;
var $Pwd;
var $DataBase;
var $DataPath;
var $PathName;
var $DB_Address;
var $DSN;
var $Conn;

function AdodbConnection()
{
//连接用户名
$this->Uid = NULL;
//连接密码
$this->Pwd = NULL;
//数据库文件
$this->DataBase = "Test.mdb";
//数据库所在目录
$this->DataPath = "DataBase";
//得到当前目录
$this->PathName = str_replace('\\','\\',dirname(__FILE__));
//得到数据库目录
$this->DB_Address = $this->PathName."\\".$this->DataPath."\\".$this->DataBase;
//ADODB Access标准连接语句
$this->DSN = "Driver={Microsoft Access Driver (*.mdb)};Dbq=".$this->DB_Address.";Uid=".$this->Uid.";Pwd=;".$this->Pwd."";
//创建COM的实例
$this->Conn = new COM("ADODB.Connection") or die("Can't Connection DataBase Of Access !");
//打开数据库
$this->Conn->Open($this->DSN);
}

function AdodbClose()
{
$this->Conn->Close();
$this->Conn->Release();
$this->Conn = NULL;
}
}
?>

//class.php

include_once("ADODB.PHP");

class ExecuteSQL extends ADODB_ACCESS
{
//$StrSQL : 数据库查询字符串
//$PageSize : 每页显示记录数
//$PageNo : 为$_GET["PageNo"]
function SelectLimit($StrSQL,$PageSize,$PageNo)
{
//连接ACCESS
$this->AdodbConnection();
$Result = $this->Conn->Execute($StrSQL);
$ResultNum = $this->Conn->Execute($StrSQL);
$FieldsNum = $Result->Fields->Count();
//得到总记录
$Total = 0;
while(!$ResultNum->EOF)
{
$Total++;
$ResultNum->MoveNext();
}
//定义循环
$k = 0;
//定义页数
if(($Total%$PageSize)==0)
$MaxPage = (int)($Total/$PageSize);
else
$MaxPage = (int)($Total/$PageSize)+1;
if(empty($PageNo)) $PageNo = 1;
if($PageNo < 1) $PageNo = 1;
if($PageNo > $MaxPage) $PageNo = $MaxPage;
//定义每页开始记录数
$StartPos = ($PageNo-1)*$PageSize;
$EndPos = $PageSize*$PageNo+1;
print("共有".$MaxPage."页".",".$Total."条记录,第".$PageNo."页,每页显示".$PageSize."条

");
//循环
while (!$Result->EOF)
{
//这里实现分页
//思路为:得到所有记录,但只打印当前页码的记录。
//PHP+ACCESS分页的方法很多,自己想想。
//我这个方法很笨,提示一种方法:
//
//将$StrSQL查询字符串改写,SelectLimit($StrSQL,$PageSize,$StartPage)可成为独立的函数
//例:$StrSQL="select * from cars order by id desc limit $StartPage,$PageSize"(MySQL)
// $StrSQL="select * from cars order by id desc where id>$StartPage and id<$EndPos"(Access)
//
//E-Mail: Lovetidal@126.com
//OICQ : 3076622
//
if($k>=($StartPos) && $k<($EndPos)){
for ($i=0; $i < $FieldsNum; $i++)
{
echo $Result->Fields[$i]->value." ";
}
echo "
";
}
$k++;
$Result->MoveNext();
}

//分页,自己改.
echo "<< First ";
$PageNo = $PageNo-1;
echo "< Provious ";
$PageNo = $PageNo+1;
echo "Next > ";
echo "Last >>";
//关闭连接
$this->AdodbClose();
}
}
?>
//default.php

include_once ('CLASS.PHP');

$a = new ExecuteSQL;
$a->SelectLimit("Select * From Cars","20",$PageNo);
?>
/*
说明:
COM+CLASS实现连接,并实现了翻页功能
*/
转自生活悠闲的空间

最新评论

相关分类

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 17:36 , Processed in 0.127472 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部