mysql adodb_常用的adodb使用方法
整理:飛豹游俠?QQ:8527385?E-mail:liuchengcn?#?163.com
如有錯誤之處,敬請諒解,并QQ或E-mail通知我,謝謝*///定義數據庫變量$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");//建立數據庫對象$db->debug=true;//數據庫的DEBUG測試,程序開發期,可設置為true,正式版要注釋掉這行,(默認值是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?這個變量可以設置的值
常用的是:ADODB_FETCH_NUM?或?ADODB_FETCH_ASSOC
ADODB_FETCH_NUM???返回的記錄集中的索引,是數字形式,即數據庫字段的排序順序值
ADODB_FETCH_ASSOC?返回的記錄集中的索引,是原數據庫字段名
ADODB_FETCH_BOTH?和?ADODB_FETCH_DEFAULT?是同時返回?ADODB_FETCH_NUM,?ADODB_FETCH_ASSOC的值,某些數據庫不支持
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);?#?返回的數組是:?array([0]=>'v0',[1]?=>'v1')
print_r($rs2->fields);?#?返回的數組是:?array(['col1']=>'v0',['col2']?=>'v1')*///連接數據庫,方法有Connect,PConnect,NConnect,一般使用Connect.?NConnect是連接特殊的數據庫時才用if(!@$db->Connect("$DB_HOST","$DB_USER","$DB_PASS","$DB_DATABASE"))?{exit('服務器忙,請稍候再訪問');
}/*$db->??$rs->?此類的使用方法
Execute($sql,$inputarr=false),執行參數中的$sql語句,后面的那個$inputarr參數,一般情況下不需要
SelectLimit($sql,$numrows=-1,$offset=-1,$inputarr=false)?$numrows:取幾條記錄,$offset,從第幾條開始取,SelectLimit,一般是用于分頁,或只取出幾條記錄的時候用*///Example:?取出多個記錄$sql="SELECT?*?FROM?table?ORDER?BY?id?DESC";if(!$rs=$db->Execute($sql))?{//執行SQL語句,并把結果返回給$rs變量echo$db->ErrorMsg();//這個是打印出錯信息$db->Close();//關閉數據庫exit();
}while(!$rs->EOF)?{//遍歷記錄集echo$rs->fields['username'].'';//print_r($rs->fields)試試,$rs->fields['字段名'],返回的是這個字段里的值$rs->MoveNext();//將指針指到下一條記錄,不用的話,會出現死循環!}$rs->Close();//關閉它,以便釋放內存,每次操作完都進行一次關閉,養成編程的好習慣
//插入新記錄$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);//取單個記錄
//$db->GetRow($sql),?取出SQL中的第一條記錄,并返回一個數組,如果出錯,則返回false$sql="SELECT?username,password,user_type?FROM?table?WHERE?id=3";$data_ary=$db->GetRow($sql);if($data_ary==false)?{//如果用===,可能不是你想要的結果echo'沒有找到此記錄';exit();
}else{echo$data_ary['username'].''.$data_ary['password'].''.$data_ary['user_type'].'';
}//這里沒有用到$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'沒有找到此記錄';exit();
}else{echo$result['username'].''.$result['password'].''.$result['user_type'].'';
}//$db->GetOne($sql)?取出SQL中的第一條記錄的第一個字段的值,如果出錯,則返回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的值/*在進行添加,修改,刪除記錄操作時,要對字符串型的字段,使用$db->qstr()對用戶輸入的字符進行處理,對數字型字段,要在之前,進行數據判斷
更新記錄,注意:這是針對php.ini中,magic_quotes被設置為Off的情況,如果不確定,可以使用
$db->qstr($content,get_magic_quotes_gpc())
注意:content=?等號右邊,沒有單引號*/$sql="UPDATE?table?SET?content=".$db->qstr($content)."WHERE?id=2";$db->Execute($sql);/*$db->Insert_ID(),無參數,返回剛剛插入的那條記錄的ID值,僅支持部分數據庫,帶auto-increment功能的數據庫,如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),產生一個ID值.$seqName:用于產生此ID的數據庫表名,$startID:起始值,一般不用設置,它會把$seqName中的值自動加1.支持部分數據庫,某些數據庫不支持
Insert_ID,GenID,一般我用GenID,使用它的目的,是在插入記錄后,要馬上得到它的ID時,才用*//*Example:
先創建一個列名為user_id_seq的表,里面只有一個字段,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(),取出記錄集總數,無參數
它好像是把取出的記錄集,用count()數組的方法,取得數據的數量
如果取大量數據,效率比較慢,建議使用SQL里的COUNT(*)的方法
$sql?=?"SELECT?COUNT(*)?FROM?table",?用此方法時,不要在SQL里加ORDER?BY,那樣會降低執行速度
Example:*/$sql="SELECT?*?FROM?table?ORDER?BY?id?DESC";if(!$rs=$db->Execute($sql))?{echo$db->ErrorMsg();$db->Close();exit();
}$record_nums=$rs->RecordCount();/*如果想對某一結果集,要進行兩次同樣的循環處理,可以用下面方法
以下,只是一個例子,只為說明$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['字段名'],返回的是這個字段里的值$rs->MoveNext();//將指針指到下一條記錄,不用的話,會出現死循環!}$username_ary=array_unique($username_ary);$rs->MoveFirst();//將指針指回第一條記錄,無參數while(!$rs->EOF)?{echo$rs->fields['password'].'';//print_r($rs->fields)試試,$rs->fields['字段名'],返回的是這個字段里的值$rs->MoveNext();//將指針指到下一條記錄,不用的話,會出現死循環!}$rs->Close();/*當本頁程序,對數據庫的操作完畢后,要$db->Close();*/$db->Close();/*一個不錯的方法*/if(isset($db))?{$db->Close();
}?>
總結
以上是生活随笔為你收集整理的mysql adodb_常用的adodb使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 带你一文读懂SaaS版多租户商城系统对多
- 下一篇: 装机必备,四款良心软件释放你的电脑潜力,