一個簡潔的PHP操作Access類
/*
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程式碼:
$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
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.='<a href="/index.php" target="_blank" title="'.$gbinf[$i]['usname'].'"><img src="/'.$gbinf[$i]['thumb'].'" /></a><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"><a href="/index.php" target="_blank" title="'.$gbinf[$i]['usmessage'].'" style="line-height:20px; font-size:12px">'.$gbinf[$i]['usmessage'].'</a></div>';
}
$uhtml.='</td>';
}
$uhtml.='</tr></table>';
echo "document.write('".$uhtml."')";
又一段程式碼例子,以本檔案路徑確定資料庫路徑:
/*
===========================
資料庫連線配置
*/
$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 '<script type="text/javascript">alert("報名成功,請等待工作人員與您聯絡!");</script>';
echo '<p align="center"><h1>恭喜您報名成功,請等待工作人員與您聯絡!</h1></p>';
echo '<p align="center"><a href="90d.php">返回活動首頁</a> <a href="/">返回商城首頁</a></p>';
}