ADODB 入門
11. 更新記錄(Update)
您可以用傳統(tǒng)的方式:
$sql ="UPDATE t SET name='john', year=28 WHERE year=18";
$conn->Execute($sql);
也可以用以下這種方式:
<?php
// 引入 ADODB
include('adodb/adodb.inc.php');
// 建立聯(lián)機對象
$conn = &ADONewConnection('mysql');
// 偵錯
$conn->debug=true;
// DSN 四項基本數(shù)據(jù)設(shè)定
$mch="localhost";
$user="piza";
$pwd="ooo123";
$database="test";
// 連接至數(shù)據(jù)庫 test
$conn->PConnect($mch, $user, $pwd, $database);
// 選擇要更新的那一筆記錄
$sql = "select * from t where year=18";
$rs = $conn->Execute($sql);
// 用一個空數(shù)組來裝要更新的數(shù)據(jù)
$r = array();
$r['name']='john';
$r['year']=28;
// 用 GetUpdateSQL 函式來制作一個完整的 sql 命令,此 sql 命令放在 $updateSQL 中
$updateSQL = $conn->GetUpdateSQL($rs, $r);
// 執(zhí)行更新
$conn->Execute($updateSQL);
$conn->Close();
?>
偵錯訊息如下:
-------------------------------------------------------------
(mysql): select * from t where year=18
-------------------------------------------------------------
(mysql): UPDATE t SET name = 'john', year = 28 WHERE year=18
-------------------------------------------------------------
12. 刪除記錄(Delete)
刪除記錄很簡單,采傳統(tǒng)方式即可: $sql = "DELETE FROM t WHERE year=18";
$rs = $conn->Execute($sql);
13. 使用字段對象(Field Objects)
這里示范字段對象 FetchField 的用法,用以取得字段名稱及字段型態(tài):
$sql = "select * from t";
$rs = &$conn->Execute($sql);
if ($rs) {
while (!$rs->EOF) {
// 取出第二個字段
$f = $rs->FetchField(1);
// 印出字段名稱 及 字段型態(tài)
print $f->name . ":" . $f->type;
$rs->MoveNext();
print "<br>\n";
}
}
另外,ADODB 提供一個 RecordSet 函式 MetaType(),可將原始的字段型態(tài)轉(zhuǎn)成一般型態(tài)代碼:
C : 字符
X : text
B : blob
D : 日期
T : timestamp
L : 布爾值或位
I : 整數(shù)
N : 數(shù)字型態(tài),包括:自動增加、數(shù)值、浮點數(shù)、實數(shù)及整數(shù)
R : serial、自動增加
用例:
$f = $rs->FetchField(1);
// 印出字段名稱 及 字段型態(tài)的代碼
print $f->name . ":" . $rs->MetaType($f->type);
14. 簡單分頁(Pager)
ADODB 提供一種簡單分頁顯示記錄的方法,使用前,要將 adodb-pager.inc.php 引入。
<?php
include('adodb/adodb.inc.php');
// 引入分頁功能
include('adodb/adodb-pager.inc.php');
// 啟動 session
session_start();
$db = ADONewConnection('mysql');
$mch="localhost";
$user="piza";
$pwd="ooo123";
$database="test";
$db->Connect($mch, $user, $pwd, $database);
$sql = "select * from t";
// 產(chǎn)生 pager 對象
$pager = new ADODB_Pager($db, $sql);
// 每一頁秀 5 筆記錄
$pager->Render($rows_per_page=5);
?>
結(jié)果如下:
Figure 1. 簡單分頁功能
每頁顯示記錄的數(shù)目是由 Render() 來控制的,若沒有傳入指定的 row 數(shù)給 Render(),默認(rèn)值每頁秀 10 筆。
另外,字段名稱也可以改變,如下示范:
<?php
include('adodb/adodb.inc.php');
// 引入分頁功能
include('adodb/adodb-pager.inc.php');
// 啟動 session
session_start();
$db = ADONewConnection('mysql');
$mch="localhost";
$user="piza";
$pwd="ooo123";
$database="test";
$db->Connect($mch, $user, $pwd, $database);
$sql = "select name as '姓名', year as '年紀(jì)' from t";
// 產(chǎn)生 pager 對象
$pager = new ADODB_Pager($db, $sql);
// 每一頁秀 5 筆記錄
$pager->Render($rows_per_page=5);
?>
結(jié)果如下:
Figure 2. 改變字段名稱
15. 輸出 CSV 檔
ADODB 提供輸出 CSV 檔的方法,使用前,要將 toexport.inc.php 引入。
<?php
include('adodb/adodb.inc.php');
// 引入輸出 CSV 文件功能
include('adodb/toexport.inc.php');
$db = ADONewConnection('mysql');
$mch="localhost";
$user="piza";
$pwd="ooo123";
$database="test";
$db->Connect($mch, $user, $pwd, $database);
$sql = "select name as '姓名', year as '年紀(jì)' from t";
$rs = $db->Execute($sql);
// 秀出 CSV 格式
print rs2csv($rs);
?>
結(jié)果如下:
姓名,年紀(jì)
abcde,45
yyy,20
ppp,34
mmm,13
hhh,41
rrr,65
kkk,29
miso,154
sss,89
abc,18
abcde,0
uyt,58
john,28
也可用 tab 分隔字段,使用 rs2tab 方法如下:
print rs2tab($rs, false);
注: false 表示不顯示字段名稱
結(jié)果如下:
abcde 45
yyy 20
ppp 34
mmm 13
hhh 41
rrr 65
kkk 29
miso 154
sss 89
abc 18
abcde 0
uyt 58
john 28
若是 print rs2tab($rs, true);
結(jié)果如下:
姓名 年紀(jì)
abcde 45
yyy 20
ppp 34
mmm 13
hhh 41
rrr 65
kkk 29
miso 154
sss 89
abc 18
abcde 0
uyt 58
john 28
也可以將結(jié)果由標(biāo)準(zhǔn)輸出(STDOUT)顯示,使用 rs2tabout 方法如下:
print rs2tabout($rs);
執(zhí)行結(jié)果如下:
Figure 1. 在console中顯示結(jié)果
也可以存成 CSV 檔:
// 檔案路徑
$path = "/tmp/test.csv";
// 開檔供寫入
$fhd = fopen($path, "w");
// 若開檔成功
if ($fhd) {
// 則寫入 CSV
rs2csvfile($rs, $fhd);
// 也可以使用 rs2tabfile($rs, $fhd);
// 關(guān)檔
fclose($fhd);
}
結(jié)果如下:
[ols3@p web]$ cat /tmp/test.csv
姓名,年紀(jì)
abcde,45
yyy,20
ppp,34
mmm,13
hhh,41
rrr,65
kkk,29
miso,154
sss,89
abc,18
abcde,0
uyt,58
john,28
16. 取出一定筆數(shù)的記錄 (使用 SelectLimit)
ADODB 提供一個 ADOConnect 函式 SelectLimit,可供您取出一定筆數(shù)的記錄,用法如下:
$conn->Connect($mch, $user, $pwd, $database);
rs = $conn->SelectLimit("Select * from t", 3, 1);
// 取出 3 筆、在第 1 筆之后
// 秀出這 3 筆記錄
if ($rs) {
while( $ar = $rs->FetchRow() ) {
print $ar['name'] ." " . $ar['year'];
print "<br>\n";
}
}
上式是說:在第 1 筆記錄之后,取出 3 筆,也就是第 2、3、4 筆記錄。
結(jié)果如下:
--------------------------------------
(mysql): select * from t LIMIT 1,3
--------------------------------------
注意 ! SelectLimit 的寫法剛好和 MySQL 語法相反 !
17. 結(jié)語
本講義,主要是為:有心參與 SFS3 (sfs.wpes.tcc.edu.tw) 計劃的伙伴們而寫的。做為一份入門文件,以上這些介紹,應(yīng)該是足夠讓您了解 ADODB 并且能把它應(yīng)用在 SFS3 或其它有意義的地方了吧? 若果真如此,小弟就心滿意足了 !
ref. 參考資源
相關(guān)文章
windows10系統(tǒng)安裝mysql-8.0.13(zip安裝) 的教程詳解
這篇文章主要介紹了windows10安裝mysql-8.0.13(zip安裝) 的教程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-11-11count(1)、count(*)與count(列名)的執(zhí)行區(qū)別詳解
這篇文章主要介紹了count(1)、count(*)與count(列名)的執(zhí)行區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11mysql Community Server 5.7.19安裝指南(詳細(xì))
這篇文章主要介紹了mysql Community Server 5.7.19安裝指南(詳細(xì)),需要的朋友可以參考下2017-10-10linux下mysql開啟遠(yuǎn)程訪問權(quán)限 防火墻開放3306端口
這篇文章主要為大家詳細(xì)介紹了linux下mysql開啟遠(yuǎn)程訪問權(quán)限,防火墻開放3306端口,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01