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

发布时间:2007年03月13日      浏览次数:1201 次
<?php
//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
<?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."条<br><br>");
//循环
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 "<br>";
}
$k++;
$Result->MoveNext();
}
//分页,自己改.
echo "<a href=\"?PageNo=1\"><< First</a> ";
$PageNo = $PageNo-1;
echo "<a href=\"?PageNo=".$PageNo."\">< Provious</a> ";
$PageNo = $PageNo+1;
echo "<a href=\"?PageNo=".$PageNo."\">Next ></a> ";
echo "<a href=\"?PageNo=".$MaxPage."\">Last >></a>";
//关闭连接
$this->AdodbClose();
}
}
?>
//default.php
<?
include_once ('CLASS.PHP');
$a = new ExecuteSQL;
$a->SelectLimit("Select * From Cars","20",$PageNo);
?>
/*
说明:
COM+CLASS实现连接,并实现了翻页功能
*/
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!