MySql資料庫AdoDB函數執行個體詳解(1/3)

來源:互聯網
上載者:User

1.GetAll方法我們可以使用GetAll方法代替Execute()方法,該方法返回的結果為一個二維關聯資料,這樣可以使用foreach或for迴圈語句處理,非常方便。另外,GetAll取得的數組與Smarty模板的foreach配合得非常好。
我們一起看下面的指令碼例子:

 代碼如下 複製代碼
<?php
include_once("libs/adodb/adodb.inc.php");
// 建立一個mysql串連執行個體對象
$db = NewADOConnection("mysql");
// 開啟一個資料庫連接
$db->Connect("localhost", "root", "root", "library") or die("Unable to connect");
// 構造並執行一個查詢
$query = "SELECT * FROM library";
$result = $db->GetAll($query) or die("Error in query: $query. " . $db->ErrorMsg());
// 清除無用的對象
$db->Close();
// 可以使用print_r列印該數組的內容
// print_r($result); exit(0);
// 遍曆記錄集,顯示列的內容:TITLE 和AUTHOR
foreach ($result as $row){
echo $row[1] . " - " . $row[2] . "n";
}
// 取得和顯示返回的記錄行數
echo "n[" . sizeof($result) . " 行記錄被返回]n";
?>

GetAll()方法取得記錄集後,產生一個二維數組,類似於下面的樣子:
Array
(
[0] => Array
(
[0] => 14
[id] => 14
[1] => Mystic River
[title] => Mystic River
[2] => Dennis Lehane
[author] => Dennis Lehane
)
[1] => Array
(
[0] => 15
[id] => 15
[1] => For Kicks
[title] => For Kicks
[2] => Dick Francis
[author] => Dick Francis
)
   //下略
)

 

我們在數組一章,提到過這類混合數組最適合用foreach來處理。這種方法是對Execute()方法的補充或替代,尤其適合在遍曆查詢整個表時使用。
另外,ADODB還提供取得一條記錄的方法:GetOne()。
2.GetOne()方法ADODB有個比較直接的方法可以比較方便地檢測某條記錄是否存在,那就是它的GetOne($sql)方法。
該方法返回查詢記錄的第1條第1個欄位名的值,如果執行過程中出現錯誤,則返回布爾值false。
我們可以檢測這個值是否存在:

 代碼如下 複製代碼
<?php
Include_once("libs/adodb/adodb.inc.php");
// 建立一個mysql串連執行個體對象
$db = NewADOConnection("mysql");
// 開啟一個資料庫連接
$db->Connect("localhost", “root”, “passwd”, “adodb”) or die("Unable to connect!");
$rs = $db->GetOne("SELECT * FROM library WHERE id='$id'");
if($rs){
echo '記錄存在';
}else {
   echo '記錄不存在';
}
?>

不過這樣有一個問題是,如果資料表中id=$id的記錄有多條,不僅僅要知道是否存在有這樣一條記錄,還要把這條記錄提取出來,則可以使用ADODB的GetRow()方法。
3.GetRow()方法

 代碼如下 複製代碼
<?php
Include_once("libs/adodb/adodb.inc.php");
// 建立一個mysql串連執行個體對象
$db = NewADOConnection("mysql");
// 開啟一個資料庫連接
$db->Connect("localhost", “root”, “passwd”, “adodb”) or die("Unable to connect!");
$rs = $db->GetRow("SELECT * FROM library WHERE id='$id'");
if(is_array($rs)){
   echo '記錄存在';
   print_r($rs);
} else {
   echo '記錄不存在';
}
?>

需要注意的是,GetOne($sql) 和 GetRow($sql) 都能得到一條特定的記錄,或者得到該記錄不存在的資訊,但是如果符合查詢條件的記錄存在多條時,則這兩個方法只傳回第一條記錄,其他的都自動拋棄。
如果只要得到查詢結果的行數,則可以使用結果集方法中的RecordCount()方法。
4.取得返回的記錄行數ADODB還提供了一批實用功能,如在進行查詢時,提供了非常有用的RecordCount() 和FieldCount()方法,分別返回記錄的數量和欄位的數量,以下是應用這兩個方法的例子。

 代碼如下 複製代碼
<?php
include("libs/adodb/adodb.inc.php");
// 建立一個mysql串連執行個體對象
$db = NewADOConnection("mysql");
// 開啟一個資料庫連接
$db->Connect("localhost", “root”, “passwd”, “adodb”) or die("Unable to connect!");
// 構造並執行一個查詢
$query = "SELECT * FROM library";
$result = $db->Execute($query) or die("Error in query: $query. " . $db->ErrorMsg());
// 取得和顯示返回的記錄行數
echo $result->RecordCount() . " 行記錄被返回n";
// 取得和顯示返回的欄位個數
echo $result->FieldCount() . " 個欄位被返回n";
// clea up
$db->Close();
?>

我們可以使用FetchField()方法取得欄位的資訊,其中含有該欄位的詳細資料,包括名稱和類型等,請看如下的指令碼例子。

 代碼如下 複製代碼
<?php
include("libs/adodb/adodb.inc.php");
// 建立一個mysql串連執行個體對象
$db = NewADOConnection("mysql");
// 開啟一個資料庫連接
$db->Connect("localhost", "root", "passwd", "adodb") or die("Unable to connect!");
// 構造並執行一個查詢
$query = "SELECT * FROM library";
$result = $db->Execute($query) or die("Error in query: $query. " . $db->ErrorMsg());
// 取得記錄集中欄位的結構資訊
for($x=0; $x<$result->FieldCount(); $x++){
print_r($result->FetchField($x));
}
// 清理無用的對象
$db->Close();
?>

下面輸出的是有關id欄位的結構資訊。
stdClass myMagicbject
(
[name] => id
[table] => library
[def] =>
[max_length] => 3
[not_null] => 1
[primary_key] => 1
[multiple_key] => 0
[unique_key] => 0
[numeric] => 1
[blob] => 0
[type] => int
[unsigned] => 1
[zerofill] => 0
[binary] =>
)
5.其他相關方法當執行一個INSERT查詢時,如果該表的主鍵是一個自動增量的欄位,則可以使用ADODB的insert_id()方法,來獲得最後資料插入時自動產生的增量值。

 代碼如下 複製代碼
<?php
include_once(“libs/adodb/adodb.inc.php”);
// 建立一個mysql串連執行個體對象
$db = NewADOConnection("mysql");
// 開啟一個資料庫連接
$db->Connect("localhost", “root”, “root”, “adodb”) or die("Unable to connect!");
// 構造並執行INSERT插入操作
$title = $db->qstr("PHP5與MySQL5 Web開發技術詳解");
$author = $db->qstr("杜江");
$query = "INSERT INTO library (title, author) VALUES ($title, $author)";
$result = $db->Execute($query) or die("Error in query: $query. " . $db->ErrorMsg());
// 顯示插入的記錄號
if ($result){
echo "最後插入的記錄ID: " . $db->Insert_ID();
}
// 清理無用的對象
$db->Close();
?>

指令碼中的qstr()方法,功能是過濾SQL查詢中的非法字元。

首頁 1 2 3 末頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.