最近写的一个PHP操作Access类(PHP+ODBC+Access)
时间:2006-08-11
来源:互联网
代码如下:
PHP代码:
<?php
--------------------------------------------------------------------
//FileName:class.php
//Summary: Access数据库操作类
//Author: forest
//CreateTime: 2006-8-10
//LastModifed:
//copyright (c)2006
//http://freeweb.nyist.net/~chairy
//[email][email protected][/email]
// 使用范例:
//$databasepath="database.mdb";
//$dbusername="";
//$dbpassword="";
//include_once("class.php");
//$access=new Access($databasepath,$dbusername,$dbpassword);
--------------------------------------------------------------------
class Access
{
var $databasepath,$constr,$dbusername,$dbpassword,$link;
function Access($databasepath,$dbusername,$dbpassword)
{
$this->databasepath=$databasepath;
$this->username=$dbusername;
$this->password=$dbpassword;
$this->connect();
}
function connect()
{
$this->constr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath($this->databasepath);
$this->link=odbc_connect($this->constr,$this->username,$this->password,SQL_CUR_USE_ODBC);
return $this->link;
//if($this->link) echo "恭喜你,数据库连接成功!";
//else echo "数据库连接失败!";
}
function query($sql)
{
return @odbc_exec($this->link,$sql);
}
function first_array($sql)
{
return odbc_fetch_array($this->query($sql));
}
function fetch_row($query)
{
return odbc_fetch_row($query);
}
function total_num($sql)//取得记录总数
{
return odbc_num_rows($this->query($sql));
}
function close()//关闭数据库连接函数
{
odbc_close($this->link);
}
function insert($table,$field)//插入记录函数
{
$temp=explode(',',$field);
$ins='';
for ($i=0;$i<count($temp);$i++)
{
$ins.="'".$_POST[$temp[$i]]."',";
}
$ins=substr($ins,0,-1);
$sql="INSERT INTO ".$table." (".$field.") VALUES (".$ins.")";
$this->query($sql);
}
function getinfo($table,$field,$id,$colnum)//取得当条记录详细信息
{
$sql="SELECT * FROM ".$table." WHERE ".$field."=".$id."";
$query=$this->query($sql);
if($this->fetch_row($query))
{
for ($i=1;$i<$colnum;$i++)
{
$info[$i]=odbc_result($query,$i);
}
}
return $info;
}
function getlist($table,$field,$colnum,$condition,$sort="ORDER BY id DESC")//取得记录列表
{
$sql="SELECT * FROM ".$table." ".$condition." ".$sort;
$query=$this->query($sql);
$i=0;
while ($this->fetch_row($query))
{
$recordlist[$i]=getinfo($table,$field,odbc_result($query,1),$colnum);
$i++;
}
return $recordlist;
}
function getfieldlist($table,$field,$fieldnum,$condition="",$sort="")//取得记录列表
{
$sql="SELECT ".$field." FROM ".$table." ".$condition." ".$sort;
$query=$this->query($sql);
$i=0;
while ($this->fetch_row($query))
{
for ($j=0;$j<$fieldnum;$j++)
{
$info[$j]=odbc_result($query,$j+1);
}
$rdlist[$i]=$info;
$i++;
}
return $rdlist;
}
function updateinfo($table,$field,$id,$set)//更新记录
{
$sql="UPDATE ".$table." SET ".$set." WHERE ".$field."=".$id;
$this->query($sql);
}
function deleteinfo($table,$field,$id)//删除记录
{
$sql="DELETE FROM ".$table." WHERE ".$field."=".$id;
$this->query($sql);
}
function deleterecord($table,$condition)//删除指定条件的记录
{
$sql="DELETE FROM ".$table." WHERE ".$condition;
$this->query($sql);
}
function getcondrecord($table,$condition="")// 取得指定条件的记录数
{
$sql="SELECT COUNT(*) AS num FROM ".$table." ".$condition;
$query=$this->query($sql);
$this->fetch_row($query);
$num=odbc_result($query,1);
return $num;
}
}
?>
作者: forest 发布时间: 2006-08-11
作者: forest 发布时间: 2006-08-14
不过也顶下
:$
作者: 姜运涛 发布时间: 2006-08-14
[ 本帖最后由 h058 于 2006-8-17 22:33 编辑 ]
作者: h058 发布时间: 2006-08-17
作者: cheerfans 发布时间: 2006-09-21
作者: fnet 发布时间: 2006-10-03
客户至上嘛
作者: fengyun 发布时间: 2006-10-04
作者: visam 发布时间: 2006-10-08


作者: kenus 发布时间: 2006-10-09
作者: g0c0 发布时间: 2006-12-04
作者: leehui1983 发布时间: 2006-12-05
作者: 水镜 发布时间: 2006-12-05


作者: kenus 发布时间: 2006-12-08
作者: waixin 发布时间: 2006-12-09
作者: �����i�i 发布时间: 2006-12-09
支持一下
作者: jzwjk 发布时间: 2006-12-17
我还没实验,只是看了forest代码,一时冲动改了一下,有参考dede的类
PHP代码:
<?php
--------------------------------------------------------------------
//FileName:class.php
//Summary: Access数据库操作类
//Author: forest
//CreateTime: 2006-8-10
//LastModifed:
//copyright (c)2006 freeweb.nyist.net/~chairy [email][email protected][/email]
// 使用范例:
//$database ="**.mdb";
//$dbuser ="**";
//$dbpwd ="**";
//$tablepre ="discuz_";
//$access=new Access($database,$dbuser,$dbpwd,$tablepre);
//$query="SELECT * FROM ----"
//$access->set_query($query);
//$access->query();
--------------------------------------------------------------------
class Access{
var $databasepath;
var $constr;
var $dbusername;
var $dbpassword;
var $linkid;
var $result;
var $queryString;
var $tablepre; //数据表前缀
function __construct($database,$dbuser,$dbpwd,$pre,$mode){
$this->databasepath=$database;
$this->username=$dbuser;
$this->password=$dbpwd;
$this->tablepre=$pre;
$this->connect($mode);
}
function Access($database,$dbuser,$dbpwd,$pre,$mode){
$this->__construct($database,$dbuser,$dbpwd,$pre,$mode);
}
function connect($mode=false){
$this->constr = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" . realpath($this->databasepath);
if($mode){
$this->linkid = odbc_pconnect($this->constr,$this->username,$this->password,SQL_CUR_USE_ODBC);
} else {
$this->linkid = odbc_connect($this->constr,$this->username, $this->password,SQL_CUR_USE_ODBC);
}
return $this->linkid;
}
function set_query($sql) {
$prefix="#@__";
$sql = trim($sql);
$inQuote = false;
$escaped = false;
$quoteChar = '';
$n = strlen($sql);
$np = strlen($prefix);
$restr = '';
for($j=0; $j < $n; $j++) {
$c = $sql{$j};
$test = substr($sql, $j, $np);
if(!$inQuote) {
if ($c == '"' || $c == "'") {
$inQuote = true;
$escaped = false;
$quoteChar = $c;
}
} else {
if ($c == $quoteChar && !$escaped) {
$inQuote = false;
} else if ($c == "\\" && !$escaped) {
$escaped = true;
} else {
$escaped = false;
}
}
if ($test == $prefix && !$inQuote) {
$restr .= $this->tablepre;
$j += $np-1;
} else {
$restr .= $c;
}
}
$this->queryString = $restr;
}
function query($id="me"){
$this->result[$id] = @odbc_exec($this->linkid,$this->queryString);
if(!$this->result[$id]) {
$this->display_error("Execute Query False! <font color='red'>".$this->queryString."</font>");
}
}
function first_array($id="me"){
return odbc_fetch_array($this->result[$id]);
}
function fetch_row($id="me"){
return odbc_fetch_row($this->result[$id]);
}
function total_num($id="me"){//取得记录总数
return odbc_num_rows($this->result[$id]);
}
function close(){//关闭数据库连接函数
@odbc_close($this->linkid);
$this->free_all_result();
}
function free_result($id="me") {
@mysql_free_result($this->result[$id]);
}
function free_all_result() {
if(!is_array($this->result)) {
return "";
}
foreach($this->result as $kk => $vv){
if($vv) @odbc_free_result($vv);
}
}
function insert($table,$field,$value){//插入记录函数
$sql="INSERT INTO {$table} ({$field}) VALUES ({$value})";
$this->set_query($sql);
$this->query();
}
function getinfo($table,$requirement,$limit){//取得当条记录详细信息
$sql="SELECT * FROM {$table} WHERE {$requirement}";
$this->set_query($sql);
$this->query();
if($this->fetch_row()){
for ($i=1;$i<$limit;$i++){
$info[$i]=odbc_result($this->result["me"],$i);
}
}
return $info;
}
function getlist($table,$field,$limit,$condition,$sort="ORDER BY id DESC"){//取得记录列表
$sql="SELECT * FROM ".$table." ".$condition." ".$sort;
$this->set_query($sql);
$this->query();
while ($this->fetch_row()){
$id=odbc_result($this->result["me"],1);
$requirement="{$field}={$id}";
$recordlist[]=getinfo($table,$requirement,$limit);
}
return $recordlist;
}
function getfieldlist($table,$field,$fieldnum,$condition="",$sort=""){//取得记录列表
$sql="SELECT ".$field." FROM ".$table." ".$condition." ".$sort;
$this->set_query($sql);
$this->query();
while ($this->fetch_row()){
for ($j=0;$j<$fieldnum;$j++){
$info[$j]=odbc_result($this->result["me"],$j+1);
}
$rdlist[]=$info;
}
return $rdlist;
}
function updateinfo($table,$requirement,$set){//更新记录
$sql="UPDATE {$table} SET {$set} WHERE {$requirement}";
$this->set_query($sql);
$this->query();
}
function deleteinfo($table,$requirement){//删除记录
$sql="DELETE FROM {$table} WHERE {$requirement}";
$this->set_query($sql);
$this->query();
}
function deleterecord($table,$condition){//删除指定条件的记录
$sql="DELETE FROM ".$table." WHERE ".$condition;
$this->set_query($sql);
$this->query();
}
function getcondrecord($table,$condition=""){// 取得指定条件的记录数
$sql="SELECT COUNT(*) AS num FROM ".$table." ".$condition;
$this->set_query($sql);
$this->query();
$num=odbc_num_rows($this->result["me"]);
return $num;
}
function display_error($msg) {
echo "<html>\r\n";
echo "<head>\r\n";
echo "<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>\r\n";
echo "<title>DedeCms Error Track</title>\r\n";
echo "</head>\r\n";
echo "<body>\r\n<p style='line-helght:150%;font-size:10pt'>\r\n";
echo $msg;
echo "<br/><br/>";
echo "</p>\r\n</body>\r\n";
echo "</html>";
}
}
?>
作者: muqiao 发布时间: 2006-12-17
作者: forest 发布时间: 2006-12-17
作者: newbird 发布时间: 2006-12-18
作者: Internet 发布时间: 2006-12-20

作者: 特蓝克斯 发布时间: 2006-12-25
是什么哦?
作者: redmangame 发布时间: 2007-01-13
作者: Poon 发布时间: 2007-01-13
作者: zfh 发布时间: 2007-02-01
作者: gd286115 发布时间: 2007-02-22
我原来有个ACCESS的数据库里有些东西需要转,哈哈。
作者: 瓜哥 发布时间: 2007-02-24
应该用5.0的新写法,构造器用__construct
成员变量,成员函数应该用private,public
还有,应该写一个析构函数,在析构时删除链接
作者: xuer 发布时间: 2007-02-27
作者: luzhou 发布时间: 2007-02-28
作者: HowgoO 发布时间: 2007-03-03
作者: jaony 发布时间: 2007-03-09
作者: huoyue2008 发布时间: 2007-03-09
作者: 布鲁塞尔浮木 发布时间: 2007-04-11
我不会用类
require_once("./inc/access.php");
$database ="data/aaa.mdb";
$dbuser ="";
$dbpwd ="";
$tablepre ="";
$accessa=new Access($database,$dbuser,$dbpwd,$tablepre);
$query="SELECT * FROM index";
$accessa->set_query($query);
$accessa->query();
$accessa->total_num();
echo $accessa; (这句始终输出object)
然后我又试
echo $accessa->total_num(); 一片空白
这个类怎么用的啊
谁能给个例子
作者: jysoso 发布时间: 2007-05-15
呵呵;
作者: 木�^ 发布时间: 2007-05-15
3Q木头
作者: jysoso 发布时间: 2007-05-15
$result=$accessa->query();
while($rows = odbc_fetch_object($result)){
echo $rows->name;
}
还是老样子。。什么都木有
作者: jysoso 发布时间: 2007-05-15
echo $access->total_num($s)
结果是-1 为何???我晕了
作者: jysoso 发布时间: 2007-05-15
作者: coolkiss 发布时间: 2007-05-16
http://www.jerryhong.com/2007/08 ... %e5%ba%93/#more-104
作者: hjrgenius 发布时间: 2007-08-14
我看了半年的mysql
进展还是不大
你们到底怎么武装的这么强悍
哦哦
向版主学习

作者: tinyqueen 发布时间: 2007-12-28
作者: guzhongzhi 发布时间: 2007-12-29
引用:
原帖由 forest 于 2006-8-11 10:08 发表最近接了一个网站使用的是PHP+Access,汗,以前从来没有用php+Access做过,参考别人写的access函数,自己加入了一些其他的功能,封装为一个类,感觉调用蛮方便的,虽然没有测试过,但是感觉PHP+Access的速度没有PHP+M ...
呵呵 和你客户商量一下换数据库吧。 数据量大了他就哭吧。 access 基本不零。
作者: zshtom 发布时间: 2008-01-01
作者: ericwu07 发布时间: 2008-04-22
作者: ericwu07 发布时间: 2008-04-22

作者: richardhc 发布时间: 2008-05-12
学学习习!!!
作者: piaohh 发布时间: 2008-05-13
作者: qiaogqiang 发布时间: 2008-05-21

作者: richardhc 发布时间: 2008-05-28
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28