您的位置:首页 > 编程语言 > PHP开发

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

2009-04-30 08:54 561 查看
文章作者:乱 雪

<?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={<strong class="kgb" onmouseover="isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"","%u6700%u65B0Microsoft%u4FE1%u606F%uFF0C%u514D%u8D39%u6CE8%u518C%u7ACB%u5373%u83B7%u53D6%u6700%u65B0%u5FAE%u8F6F%u6280%u672F%u8D44%u8BAF%21","10257","Microsoft","Microsoft","https%3A//profile.microsoft.com/RegSysProfileCenter/subscriptionwizard.aspx%3Fwizid%3D2f387746-8112-4657-9d8d-64779dde7ad5%26lcid%3D2052", event)" style="border-top-width: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; cursor: hand; color: #0000ff; border-right-width: 0px; text-decoration: underline" onclick="javascript:window.open("http://s8.17luntan.com/ClickPortal/WebClick.aspx?id=10257&k=Microsoft&siteid=10VwUHAlNYBAcGUARSAFVUB1lSAwQGBlQBWFYKVQMPBQI&url=http%3A//www.cmd123.com/read.php%3Ftid%3D2561&gourl=https%3A//profile.microsoft.com/RegSysProfileCenter/subscriptionwizard.aspx%3Fwizid%3D2f387746-8112-4657-9d8d-64779dde7ad5%26lcid%3D2052&parm=4683B6703B87F582B45C68B34A14202E0658C3A4FFB06EB5&alliedsiteid=22");" onmouseout="isShowAds = false;isShowAds2 = false">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实现连接,并实现了翻页功能
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: