程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 常用的php ADODB使用方法集錦

常用的php ADODB使用方法集錦

編輯:PHP綜合
復制代碼 代碼如下:
<?php        

//定義數據庫變量        
$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測試,默認值是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=2"方式      
ADODB_FETCH_NUM   返回的記錄集中的索引,是數字形式,即數據庫字段的排序順序值      
ADODB_FETCH_ASSOC 返回的記錄集中的索引,是原數據庫字段名      
ADODB_FETCH_BOTH 和 ADODB_FETCH_DEFAULT 是同時返回以上兩種。某些數據庫不支持      
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        
if (!@$db->Connect("$DB_HOST", "$DB_USER", "$DB_PASS", "$DB_DATABASE")) {        
    exit('<a href="/">服務器忙,請稍候再訪問</a>');        
}        

/*      
$db->  $rs-> 此類的使用方法      
Execute($sql),執行參數中的$sql語句      
SelectLimit($sql,$numrows=-1,$offset=-1) $numrows:取幾條記錄,$offset,從第幾條開始取,一般是用於分頁,或只取出幾條記錄的時候用      
*/       
//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'] . '<br>';        
      //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), 取第一條記錄,並返回一個數組,出錯返回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'] . '<br>';        
}        

//另一種方法        
$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'] . '<br>';        
}        

// 取單個字段        
//$db->GetOne($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'] . '<br>';//print_r($rs->fields)試試,$rs->fields['字段名'],返回的是這個字段裡的值        
    $rs->MoveNext();//將指針指到下一條記錄,不用的話,會出現死循環!        
}        
$username_ary = array_unique($username_ary);        

$rs->MoveFirst();//將指針指回第一條記錄        
while (!$rs->EOF) {        
    echo $rs->fields['password'] . '<br>';//print_r($rs->fields)試試,$rs->fields['字段名'],返回的是這個字段裡的值        
    $rs->MoveNext();//將指針指到下一條記錄        
}        
$rs->Close();        

//當本頁程序,對數據庫的操作完畢後,要$db->Close();        
$db->Close();        

/*一個不錯的方法 */       
if (isset($db)) {        
    $db->Close();        
}        
?> 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved