Home > Article > Backend Development > PHP class sharing for operating access database
本文介绍下,php操作access数据库的一个类,有需要的朋友参考下。
代码如下: <?php /* FileName:cls_access.php Summary: Access数据库操作类 范例: $databasepath='D:/wwwroot/cef/www/class/testdb.mdb'; //或者$databasepath='testdb.mdb'; $dbusername=''; $dbpassword=''; require_once('cls_access.php'); $access=new Access($databasepath,$dbusername,$dbpassword); print_r($access->getlist("SELECT TOP 5 * FROM `Result` WHERE `ResultNo` < 12 ORDER BY `ResultNo` DESC")); echo $access->num_rows("update `conner` set `connerip` = '222.35.142.101' where `connerno` < 83"); */ 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); if(!$this->link) echo "数据库连接失败!"; return $this->link; } function query($sql){ //直接运行SQL,可用于更新、删除数据 return @odbc_exec($this->link,$sql); } function fetch_array($query){ //取得当前指针处记录 return odbc_fetch_array($query); } function fetch_row($query){ //基本同fetch_array(),但只有数字索引 return odbc_fetch_row($query); } function num_rows($sql){ //返回SQL查询影响到的行的数目 return odbc_num_rows($this->query($sql)); } function close(){ //关闭数据库连接函数 odbc_close($this->link); } function getlist($sql){ //取得记录列表 $query=$this->query($sql); $recordlist=array(); while ($row=$this->fetch_array($query)){ $recordlist[]=$row; } return $recordlist; } } ?> 以上类中使用了ODBC,而不是ODBC数据源。 直接新建一个*.mdb文件即可使用。 附,部分常用COM方式操作Access代码: <?php $db = $_SERVER['DOCUMENT_ROOT'].'/zhuanti/ugdkfjlsg54356k6546jk654gfslkg6544s.mdb'; $conn = new COM('ADODB.Connection') or die('can not start Active X Data Objects'); $conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db"); ?> JS调用页js.php <?php include_once('conn.php'); $rs = $conn->Execute("SELECT TOP 3 * FROM userstar where chk = 1 ORDER BY id DESC"); $idgb=1; while(!$rs->EOF){ $gbinf[$idgb]['id'] = $rs->Fields['id']->Value; $gbinf[$idgb]['usname'] = $rs->Fields['usname']->Value; $gbinf[$idgb]['usage'] = $rs->Fields['usage']->Value; $gbinf[$idgb]['usprovince'] = $rs->Fields['usprovince']->Value; $gbinf[$idgb]['usfile'] = $rs->Fields['usfile']->Value; $gbinf[$idgb]['thumb'] = $rs->Fields['thumb']->Value; $gbinf[$idgb]['usmessage'] = $rs->Fields['usmessage']->Value; $rs->MoveNext(); $idgb++; } $rs->Close(); $rs = null; $uhtml=''; $uhtml.='<table border="0" align="center"><tr>'; for ($i=1; $i<4; $i++){ $uhtml.='<td width="240" align="center">'; if ($gbinf[$i]['usfile']){ $uhtml.='<img src="/'.$gbinf[$i]['thumb'].'" / alt="PHP class sharing for operating access database" ><br />'.$gbinf[$i]['usprovince'].' '.$gbinf[$i]['usname']; if ($gbinf[$i]['usage'] != 0){ $uhtml.=' ('.$gbinf[$i]['usage'].'岁)<br />'; } $uhtml.='<div style="width:180px; height:40px; overflow:hidden; text-align:left">'.$gbinf[$i]['usmessage'].'</div>'; } $uhtml.='</td>'; } $uhtml.='</tr></table>'; echo "document.write('".$uhtml."')"; ?> 另一个例子,以本文件路径确定数据库路径: <?php /* 数据库连接配置 */ $db = getcwd().'\images\90d\90dicr_os6546oftff_ic543e_cces_4535s.mdb'; $conn = new COM('ADODB.Connection') or die('can not start Active X Data Objects'); $conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db"); //print_r($_POST); if ($_POST['name'] && $_POST['tel'] && $_POST['addr'] && $_POST['email'] && $_POST['goal'] && $_POST['high'] && $_POST['weight'] && $_POST['message']) { $addsql = "INSERT INTO d90usr (`name`, `tel`, `addr`, `email`, `goal`, `high`, `weight`, `message`) VALUES ('".$_POST['name']."', '".$_POST['tel']."', '".$_POST['addr']."', '".$_POST['email']."', '".$_POST['goal']."', '".$_POST['high']."', '".$_POST['weight']."', '".strip_tags($_POST['message'])."')"; //echo '<hr />'.$addsql; $rsadd = $conn->Execute($addsql); echo ''; echo '<p align="center"><h1>恭喜您报名成功,请等待工作人员与您联系!</h1></p>'; echo '<p align="center">返回活动首页 返回商城首页</p>'; } ?> |