常用的php ADODB使用方法集錦
更新時(shí)間:2008年03月25日 21:24:16 作者:
ADODB使用方法
作者:飛豹游俠 整理:淡水河邊
復(fù)制代碼 代碼如下:
<?php
//定義數(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è)試,默認(rèn)值是false
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;//返回的記錄集形式,關(guān)聯(lián)形式
/***
返回的記錄集形式
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 返回的記錄集中的索引,是數(shù)字形式,即數(shù)據(jù)庫(kù)字段的排序順序值
ADODB_FETCH_ASSOC 返回的記錄集中的索引,是原數(shù)據(jù)庫(kù)字段名
ADODB_FETCH_BOTH 和 ADODB_FETCH_DEFAULT 是同時(shí)返回以上兩種。某些數(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
if (!@$db->Connect("$DB_HOST", "$DB_USER", "$DB_PASS", "$DB_DATABASE")) {
exit('<a href="/">服務(wù)器忙,請(qǐng)稍候再訪(fǎng)問(wèn)</a>');
}
/*
$db-> $rs-> 此類(lèi)的使用方法
Execute($sql),執(zhí)行參數(shù)中的$sql語(yǔ)句
SelectLimit($sql,$numrows=-1,$offset=-1) $numrows:取幾條記錄,$offset,從第幾條開(kāi)始取,一般是用于分頁(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'] . '<br>';
//print_r($rs->fields)試試,$rs->fields['字段名'],返回的是這個(gè)字段里的值
$rs->MoveNext();//將指針指到下一條記錄,否則出現(xiàn)死循環(huán)!
}
$rs->Close();//關(guān)閉以便釋放內(nèi)存
//插入新記錄
$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), 取第一條記錄,并返回一個(gè)數(shù)組,出錯(cuò)返回false
$sql = "Select username,password,user_type FROM table Where id=3";
$data_ary = $db->GetRow($sql);
if ($data_ary == false) {
echo '沒(méi)有找到此記錄';
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 '沒(méi)有找到此記錄';
exit();
} else {
echo $result['username'] . ' ' . $result['password'] . ' ' . $result['user_type'] . '<br>';
}
// 取單個(gè)字段
//$db->GetOne($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ì)用戶(hù)輸入的字符進(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'] . '<br>';//print_r($rs->fields)試試,$rs->fields['字段名'],返回的是這個(gè)字段里的值
$rs->MoveNext();//將指針指到下一條記錄,不用的話(huà),會(huì)出現(xiàn)死循環(huán)!
}
$username_ary = array_unique($username_ary);
$rs->MoveFirst();//將指針指回第一條記錄
while (!$rs->EOF) {
echo $rs->fields['password'] . '<br>';//print_r($rs->fields)試試,$rs->fields['字段名'],返回的是這個(gè)字段里的值
$rs->MoveNext();//將指針指到下一條記錄
}
$rs->Close();
//當(dāng)本頁(yè)程序,對(duì)數(shù)據(jù)庫(kù)的操作完畢后,要$db->Close();
$db->Close();
/*一個(gè)不錯(cuò)的方法 */
if (isset($db)) {
$db->Close();
}
?>
您可能感興趣的文章:
- PHP ADODB實(shí)現(xiàn)事務(wù)處理功能示例
- PHP ADODB實(shí)現(xiàn)分頁(yè)功能簡(jiǎn)單示例
- PHP程序中使用adodb連接不同數(shù)據(jù)庫(kù)的代碼實(shí)例
- php中adodbzip類(lèi)實(shí)例
- PHP數(shù)據(jù)庫(kù)萬(wàn)能引擎類(lèi)adodb配置使用以及實(shí)例集錦
- php adodb連接不同數(shù)據(jù)庫(kù)
- PHP中ADODB類(lèi)詳解
- 用ADODB來(lái)讓PHP操作ACCESS數(shù)據(jù)庫(kù)的方法
- PHP ADODB生成HTML表格函數(shù)rs2html功能【附錯(cuò)誤處理函數(shù)用法】
相關(guān)文章
PHP 分頁(yè)類(lèi)(模仿google)-面試題目解答
今天去XX公司面試了,感覺(jué)很不理想。因?yàn)檫@一段時(shí)間都在加深Zend Framework,都沒(méi)練習(xí)常用函數(shù)和方法了。2009-09-09
php array_merge函數(shù)使用需要注意的一個(gè)問(wèn)題
這篇文章主要介紹了php array_merge函數(shù)使用需要注意的一個(gè)問(wèn)題,本文講解array_merge合并數(shù)組時(shí)不會(huì)合并數(shù)字鍵名的問(wèn)題,大家使用時(shí)需要注意,需要的朋友可以參考下2015-03-03
php+ajax實(shí)現(xiàn)圖片文件上傳功能實(shí)例
目前常用的異步文件上傳功能有幾種,比較多見(jiàn)的如使用iframe框架形式,ajax功能效果,以及flash+php功能,需要的朋友可以參考下2014-06-06
PHP隨機(jī)數(shù)生成代碼與使用實(shí)例分析
在PHP程序設(shè)計(jì)中,隨機(jī)數(shù)的生成尤為重要。我們需要用隨機(jī)數(shù)在我們的頁(yè)面中展示隨機(jī)記錄(比如圖片、用戶(hù)記錄、文章ID等)。2011-04-04
PHP表單遞交控件名稱(chēng)含有點(diǎn)號(hào)(.)會(huì)被轉(zhuǎn)化為下劃線(xiàn)(_)的處理方法
做項(xiàng)目的過(guò)程中發(fā)現(xiàn),表單遞交就是不成功,后來(lái)發(fā)現(xiàn)原來(lái)我給控件的名字不規(guī)范導(dǎo)致,控件遞交到后端之后,發(fā)現(xiàn)所有我控件名字中含有.號(hào)的名字,遞交過(guò)之后都會(huì)被轉(zhuǎn)化成下劃線(xiàn)_2013-01-01
php中json_encode UTF-8中文亂碼的更好解決方法
網(wǎng)上找到說(shuō)json_encode編碼設(shè)置為UTF-8中文就不會(huì)亂碼,在用過(guò)一段時(shí)間之后就不太管用了,下面與大家分享更好的方法2014-09-09
PHP-CGI遠(yuǎn)程代碼執(zhí)行漏洞分析與防范
本文給大家介紹的是PHP-CGI遠(yuǎn)程代碼執(zhí)行漏洞(CVE-2012-1823)分析和防范,這是最近爆出的一個(gè)php的比較嚴(yán)重的漏洞,這里分享給大家。2017-05-05
php變量與JS變量實(shí)現(xiàn)不通過(guò)跳轉(zhuǎn)直接交互的方法
這篇文章主要介紹了php變量與JS變量實(shí)現(xiàn)不通過(guò)跳轉(zhuǎn)直接交互的方法,涉及php與javascript變量傳輸及代碼混編相關(guān)操作技巧,需要的朋友可以參考下2017-08-08

