mysql adodb_常用的adodb使用方法
整理:飛豹游俠?QQ:8527385?E-mail:liuchengcn?#?163.com
如有錯(cuò)誤之處,敬請(qǐng)諒解,并QQ或E-mail通知我,謝謝*///定義數(shù)據(jù)庫(kù)變量$DB_TYPE="mysql";$DB_HOST="localhost";$DB_USER="root";$DB_PASS="";$DB_DATABASE="ai-part";require_once("../adodb/adodb.inc.php");$db=NewADOConnection("$DB_TYPE");//建立數(shù)據(jù)庫(kù)對(duì)象$db->debug=true;//數(shù)據(jù)庫(kù)的DEBUG測(cè)試,程序開發(fā)期,可設(shè)置為true,正式版要注釋掉這行,(默認(rèn)值是false)$ADODB_FETCH_MODE=ADODB_FETCH_ASSOC;/*返回的記錄集形式
define('ADODB_FETCH_DEFAULT',0);
define('ADODB_FETCH_NUM',1);
define('ADODB_FETCH_ASSOC',2);
define('ADODB_FETCH_BOTH',3);
以上的常量,是在adodb.inc.php里定義的,也就是$ADODB_FETCH_MODE?這個(gè)變量可以設(shè)置的值
常用的是:ADODB_FETCH_NUM?或?ADODB_FETCH_ASSOC
ADODB_FETCH_NUM???返回的記錄集中的索引,是數(shù)字形式,即數(shù)據(jù)庫(kù)字段的排序順序值
ADODB_FETCH_ASSOC?返回的記錄集中的索引,是原數(shù)據(jù)庫(kù)字段名
ADODB_FETCH_BOTH?和?ADODB_FETCH_DEFAULT?是同時(shí)返回?ADODB_FETCH_NUM,?ADODB_FETCH_ASSOC的值,某些數(shù)據(jù)庫(kù)不支持
An?example:
$ADODB_FETCH_MODE?=?ADODB_FETCH_NUM;
$rs1?=?$db->Execute('select?*?from?table');
$ADODB_FETCH_MODE?=?ADODB_FETCH_ASSOC;
$rs2?=?$db->Execute('select?*?from?table');
print_r($rs1->fields);?#?返回的數(shù)組是:?array([0]=>'v0',[1]?=>'v1')
print_r($rs2->fields);?#?返回的數(shù)組是:?array(['col1']=>'v0',['col2']?=>'v1')*///連接數(shù)據(jù)庫(kù),方法有Connect,PConnect,NConnect,一般使用Connect.?NConnect是連接特殊的數(shù)據(jù)庫(kù)時(shí)才用if(!@$db->Connect("$DB_HOST","$DB_USER","$DB_PASS","$DB_DATABASE"))?{exit('服務(wù)器忙,請(qǐng)稍候再訪問(wèn)');
}/*$db->??$rs->?此類的使用方法
Execute($sql,$inputarr=false),執(zhí)行參數(shù)中的$sql語(yǔ)句,后面的那個(gè)$inputarr參數(shù),一般情況下不需要
SelectLimit($sql,$numrows=-1,$offset=-1,$inputarr=false)?$numrows:取幾條記錄,$offset,從第幾條開始取,SelectLimit,一般是用于分頁(yè),或只取出幾條記錄的時(shí)候用*///Example:?取出多個(gè)記錄$sql="SELECT?*?FROM?table?ORDER?BY?id?DESC";if(!$rs=$db->Execute($sql))?{//執(zhí)行SQL語(yǔ)句,并把結(jié)果返回給$rs變量echo$db->ErrorMsg();//這個(gè)是打印出錯(cuò)信息$db->Close();//關(guān)閉數(shù)據(jù)庫(kù)exit();
}while(!$rs->EOF)?{//遍歷記錄集echo$rs->fields['username'].'';//print_r($rs->fields)試試,$rs->fields['字段名'],返回的是這個(gè)字段里的值$rs->MoveNext();//將指針指到下一條記錄,不用的話,會(huì)出現(xiàn)死循環(huán)!}$rs->Close();//關(guān)閉它,以便釋放內(nèi)存,每次操作完都進(jìn)行一次關(guān)閉,養(yǎng)成編程的好習(xí)慣
//插入新記錄$sql="INSERT?table?(user_type,username)?VALUES?(3,?'liucheng')";$db->Execute($sql);//更新記錄$sql="UPDATE?table?SET?user_type=3?WHERE?id=2";$db->Execute($sql);//刪除記錄$sql="DELETE?FROM?table?WHERE?id=2";$db->Execute($sql);//取單個(gè)記錄
//$db->GetRow($sql),?取出SQL中的第一條記錄,并返回一個(gè)數(shù)組,如果出錯(cuò),則返回false$sql="SELECT?username,password,user_type?FROM?table?WHERE?id=3";$data_ary=$db->GetRow($sql);if($data_ary==false)?{//如果用===,可能不是你想要的結(jié)果echo'沒(méi)有找到此記錄';exit();
}else{echo$data_ary['username'].''.$data_ary['password'].''.$data_ary['user_type'].'';
}//這里沒(méi)有用到$rs,則不需要$rs->Close();
//另一種方法?(使用上面的方法比較好,又方便)$sql="SELECT?username,password,user_type?FROM?table?WHERE?id=3";if(!$rs=$db->Execute($sql))?{echo$db->ErrorMsg();$db->Close();exit();
}if(!$result=$rs->FetchRow())?{echo'沒(méi)有找到此記錄';exit();
}else{echo$result['username'].''.$result['password'].''.$result['user_type'].'';
}//$db->GetOne($sql)?取出SQL中的第一條記錄的第一個(gè)字段的值,如果出錯(cuò),則返回false$sql="SELECT?COUNT(id)?FROM?table";$record_nums=$db->GetOne($sql);echo$record_nums;$sql="SELECT?username,password,user_type?FROM?table?WHERE?user_id=1";$result=$db->GetOne($sql);echo$result;//此值為記錄中的username的值/*在進(jìn)行添加,修改,刪除記錄操作時(shí),要對(duì)字符串型的字段,使用$db->qstr()對(duì)用戶輸入的字符進(jìn)行處理,對(duì)數(shù)字型字段,要在之前,進(jìn)行數(shù)據(jù)判斷
更新記錄,注意:這是針對(duì)php.ini中,magic_quotes被設(shè)置為Off的情況,如果不確定,可以使用
$db->qstr($content,get_magic_quotes_gpc())
注意:content=?等號(hào)右邊,沒(méi)有單引號(hào)*/$sql="UPDATE?table?SET?content=".$db->qstr($content)."WHERE?id=2";$db->Execute($sql);/*$db->Insert_ID(),無(wú)參數(shù),返回剛剛插入的那條記錄的ID值,僅支持部分?jǐn)?shù)據(jù)庫(kù),帶auto-increment功能的數(shù)據(jù)庫(kù),如PostgreSQL,?MySQL?和?MS?SQL*///Example:$sql="INSERT?table?(user_type,username)?VALUES?(3,?'liucheng')";$db->Execute($sql);$data_id=$db->Insert_ID();echo$data_id;/*$db->GenID($seqName?=?'adodbseq',$startID=1),產(chǎn)生一個(gè)ID值.$seqName:用于產(chǎn)生此ID的數(shù)據(jù)庫(kù)表名,$startID:起始值,一般不用設(shè)置,它會(huì)把$seqName中的值自動(dòng)加1.支持部分?jǐn)?shù)據(jù)庫(kù),某些數(shù)據(jù)庫(kù)不支持
Insert_ID,GenID,一般我用GenID,使用它的目的,是在插入記錄后,要馬上得到它的ID時(shí),才用*//*Example:
先創(chuàng)建一個(gè)列名為user_id_seq的表,里面只有一個(gè)字段,id,int(10),NOT?NULL,然后插入一條值為0的記錄*/$user_id=$db->GenID('user_id_seq');$sql="INSERT?table?(id,?user_type,username)?VALUES?(".$user_id.",?3,?'liucheng')";$db->Execute($sql);/*$rs->RecordCount(),取出記錄集總數(shù),無(wú)參數(shù)
它好像是把取出的記錄集,用count()數(shù)組的方法,取得數(shù)據(jù)的數(shù)量
如果取大量數(shù)據(jù),效率比較慢,建議使用SQL里的COUNT(*)的方法
$sql?=?"SELECT?COUNT(*)?FROM?table",?用此方法時(shí),不要在SQL里加ORDER?BY,那樣會(huì)降低執(zhí)行速度
Example:*/$sql="SELECT?*?FROM?table?ORDER?BY?id?DESC";if(!$rs=$db->Execute($sql))?{echo$db->ErrorMsg();$db->Close();exit();
}$record_nums=$rs->RecordCount();/*如果想對(duì)某一結(jié)果集,要進(jìn)行兩次同樣的循環(huán)處理,可以用下面方法
以下,只是一個(gè)例子,只為說(shuō)明$rs->MoveFirst()的使用方法*/$sql="SELECT?*?FROM?table?ORDER?BY?id?DESC";if(!$rs=$db->Execute($sql))?{echo$db->ErrorMsg();$db->Close();exit();
}$username_ary=array();while(!$rs->EOF)?{$username_ary[]=$rs->fields['username']echo$rs->fields['username'].'';//print_r($rs->fields)試試,$rs->fields['字段名'],返回的是這個(gè)字段里的值$rs->MoveNext();//將指針指到下一條記錄,不用的話,會(huì)出現(xiàn)死循環(huán)!}$username_ary=array_unique($username_ary);$rs->MoveFirst();//將指針指回第一條記錄,無(wú)參數(shù)while(!$rs->EOF)?{echo$rs->fields['password'].'';//print_r($rs->fields)試試,$rs->fields['字段名'],返回的是這個(gè)字段里的值$rs->MoveNext();//將指針指到下一條記錄,不用的話,會(huì)出現(xiàn)死循環(huán)!}$rs->Close();/*當(dāng)本頁(yè)程序,對(duì)數(shù)據(jù)庫(kù)的操作完畢后,要$db->Close();*/$db->Close();/*一個(gè)不錯(cuò)的方法*/if(isset($db))?{$db->Close();
}?>
總結(jié)
以上是生活随笔為你收集整理的mysql adodb_常用的adodb使用方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 带你一文读懂SaaS版多租户商城系统对多
- 下一篇: mysql 多表查询语句