PHP教程之PHP連接ACCESS數據庫的類_PHP教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:如何用PHP獲取歌曲時間PHP代碼 ?php file =realpath(1.mp3); //當前目錄下1.mp3 if (!file_exists(file)) { exit('文件不存在'); } player = new COM(WMPlayer.OCX); media = player-newMedia(file); time=media-duration;//總的秒數 h=floor(time /3600);//小時 m=floor((tim
試過PHP連接ACCESS數據庫沒?這個用途不大,但有時候也用得著!我以前試圖將一個ASP程序改寫成PHP的,原程序的數據庫設計得比較完善,我打算開發時就用它的ACCESS數據庫 ,等程序完成后再轉換。這個程序改寫計劃最終擱淺了,但此過程中為了方便連接ACCESS數據庫,我寫了個PHP連接ACCESS數據庫的類,比較方便,希望有人用得著!
***本類只能在win平臺的服務器上使用
*/
class access{
function access(dir){ //構析函數,調用.com建立數據源,鏈接數據庫;參數為數據庫文件路徑
this->db=new com("adodb.connection");
this->db->open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=".realpath(dir));
}
function sql(sql){//參數為SQL查詢語句
if(preg_match("/limit +([0-9]*),([0-9]*)/",sql,out)){//正則分析sql語句,提取limit參數,模擬MYSQL的分頁
limit1=out[1];
limit2=out[2];
sql=preg_replace("/limit +([0-9]*),([0-9]*)/","",sql);
}
rs=this->db->execute(sql);
if(strpos(sql,"select")===false or strpos(sql,"select")>5){//非查詢語句直接返回空值,防止錯誤提示出現
return "";
}
if(limit1==""){
limit1=0;
}
if(limit2==""){//如果沒有limit參數,設limit2為總記錄數
limit2=1000000;
}
rs->move(limit1);//記錄指針移動到第limit1條記錄處
i=0;
while(!rs->eof and i<limit2){
foreach(rs->fields as rss){
rs_r[rss->name]=rss->value;
}
rs_rr[]=rs_r;
rs->move(1);
i++;
}
return rs_rr;
}
function getlist(db,p=""){//此函數用于將關聯數組各元素處理成相關變量,第二個參數為變量名前綴,防止重名
foreach(db as key=>dba){
global {p.key};
{p.key}=dba;
}
}
function yasuo(dir){//壓縮數據庫函數,本函數用access::yasuo(dir);調用,dir為數據庫文件路徑,調用次函數之前必須將所有當前數據庫的連接中斷!
ya =new com("JRO.JetEngine");
truedir=realpath(dir);
dirname=dirname(truedir);
prov="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
ya->CompactDatabase(prov.truedir,prov.dirname."/aatmp.mdb");//數據庫所在目錄必須有讀寫權限,否則會導致失敗!
unlink(truedir);
rename(dirname."/aatmp.mdb",truedir);
}
function add(file){//新建一個ACCESS數據庫 參數file為文件路徑,必須為相對路徑
dir=dirname(_SERVER["SCRIPT_FILENAME"])."/".file;
db=new com("ADOX.Catalog");
db->Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dir");
}
}
?>
*/
class access{
function access(dir){ //構析函數,調用.com建立數據源,鏈接數據庫;參數為數據庫文件路徑
this->db=new com("adodb.connection");
this->db->open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=".realpath(dir));
}
function sql(sql){//參數為SQL查詢語句
if(preg_match("/limit +([0-9]*),([0-9]*)/",sql,out)){//正則分析sql語句,提取limit參數,模擬MYSQL的分頁
limit1=out[1];
limit2=out[2];
sql=preg_replace("/limit +([0-9]*),([0-9]*)/","",sql);
}
rs=this->db->execute(sql);
if(strpos(sql,"select")===false or strpos(sql,"select")>5){//非查詢語句直接返回空值,防止錯誤提示出現
return "";
}
if(limit1==""){
limit1=0;
}
if(limit2==""){//如果沒有limit參數,設limit2為總記錄數
limit2=1000000;
}
rs->move(limit1);//記錄指針移動到第limit1條記錄處
i=0;
while(!rs->eof and i<limit2){
foreach(rs->fields as rss){
rs_r[rss->name]=rss->value;
}
rs_rr[]=rs_r;
rs->move(1);
i++;
}
return rs_rr;
}
function getlist(db,p=""){//此函數用于將關聯數組各元素處理成相關變量,第二個參數為變量名前綴,防止重名
foreach(db as key=>dba){
global {p.key};
{p.key}=dba;
}
}
function yasuo(dir){//壓縮數據庫函數,本函數用access::yasuo(dir);調用,dir為數據庫文件路徑,調用次函數之前必須將所有當前數據庫的連接中斷!
ya =new com("JRO.JetEngine");
truedir=realpath(dir);
dirname=dirname(truedir);
prov="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
ya->CompactDatabase(prov.truedir,prov.dirname."/aatmp.mdb");//數據庫所在目錄必須有讀寫權限,否則會導致失敗!
unlink(truedir);
rename(dirname."/aatmp.mdb",truedir);
}
function add(file){//新建一個ACCESS數據庫 參數file為文件路徑,必須為相對路徑
dir=dirname(_SERVER["SCRIPT_FILENAME"])."/".file;
db=new com("ADOX.Catalog");
db->Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dir");
}
}
?>
不知道怎么用吧!下面有示例!
<?
include("access.php");
access::add("my.mdb");//創建數據庫
db=new access("my.mdb");//連接數據庫
sql=<<<eot
CREATE TABLE a (
id AUTOINCREMENT(1,1),
name varchar(10))
eot;
db->sql(sql);//建表
sql=<<<eot
insert into `a` (`name`) values('wo ri');
eot;
db->sql(sql);//插入數據
db->sql("insert into `a` (`name`) values('靠');");
sql="select * from a limit 1,1";
rs=db->sql(sql);//查詢
print_r(rs);
?>
include("access.php");
access::add("my.mdb");//創建數據庫
db=new access("my.mdb");//連接數據庫
sql=<<<eot
CREATE TABLE a (
id AUTOINCREMENT(1,1),
name varchar(10))
eot;
db->sql(sql);//建表
sql=<<<eot
insert into `a` (`name`) values('wo ri');
eot;
db->sql(sql);//插入數據
db->sql("insert into `a` (`name`) values('靠');");
sql="select * from a limit 1,1";
rs=db->sql(sql);//查詢
print_r(rs);
?>
分享:PHP教程之一個頁面執行時間類PHP代碼 ?php class Timer//頁面執行時間類 { var starttime;//頁面開始執行時間 var stoptime;//頁面結束執行時間 var spendtime;//頁面執行花費時間 function getmicrotime()//獲取返回當前微秒數的浮點數 { list(usec,sec)=explode( ,microtime()); ret
相關PHP教程:
- 相關鏈接:
- 教程說明:
PHP教程-PHP教程之PHP連接ACCESS數據庫的類。