php中adodb中文手册,[转载]ADODB中文手册(4)
ADODB
1.31版起,新增了兩個資料集函數:GetUpdateSQL()及GetInsertSQL()。這允許你在執行了像"SELECT
* FROM table query WHERE..."這樣的查詢函數後,建立一個
$rs->fields復本,改變這些欄位,然後自動產生出更新或是新增的SQL指令。
以下我們展示如何運用這些函數,我們將存取一個資料表,帶有下列欄位:(ID,FirstName,LastName,Created)。在這些函數被執行前,你需要藉由一個對資料表的查詢指令(select)來初始化一個資料集。
#==============================================
# GetUpdateSQL() 及 GetInsertSQL() 范例碼
#==============================================
include('ADOdb.inc.php');
include('tohtml.inc.php');
#==========================
# 以下的程式碼測試新增狀態
$sql = "SELECT * FROM ADOXYZ WHERE id =
-1";
# 從資料庫中查詢出一個空的資料集
$conn =
&ADONewConnection("mysql");
# 建立一個連結
$conn->debug=1;
$conn->PConnect("localhost",
"admin",
"",
"test"); # 連結到 MySQL, 資料庫名稱為
test
$rs = $conn->Execute($sql); #
執行查詢,并取得一個空的資料集
$record = array(); # 初始化一個陣列,以便存放記錄資料供新增用
# 設定記錄中的欄位值
$record["firstname"] =
"Bob";
$record["lastname"] =
"Smith";
$record["created"] =
time();
# 傳入空的資料集及欄位資料陣列到GetInsertSQL函數中,以執行功能
# 這個函數將會依傳入的資料,回傳一個全格式的 INSERT SQL指令
$insertSQL = $conn->GetInsertSQL($rs,
$record);
$conn->Execute($insertSQL); # 將記錄挿入資料庫中
#==========================
# 以下的程式碼測試更新狀態
$sql = "SELECT * FROM ADOXYZ WHERE id =
1";
# 選擇一筆記錄以便更新
$rs = $conn->Execute($sql); #
執行這個查詢,并取得一個存在的記錄來更新
$record = array(); # 初始化一個陣列,以存放要更新的資料
# 設定欄位里的值
$record["firstname"] =
"Caroline";
$record["lastname"] =
"Smith"; # 更新 Caroline的姓由 Miranda
變成 Smith
# 傳入這個只有單一記錄的資料集以及含有資料的陣列到 GetUpdateSQL函數里
# 函數將會回傳一個具有正確 WHERE 條件的 UPDATE(更新) SQL 指令
$updateSQL = $conn->GetUpdateSQL($rs,
$record);
$conn->Execute($updateSQL); # 更新資料庫中的記錄
$conn->Close();
?>
范例 8: 使用上一筆及下一筆實作卷動我們使用HTTP取得 $next_page 變數,以追蹤要跳去那一頁并且儲存目前頁碼在
session 變數 $curr_page 里。
我們呼叫連結物件的 PageExecute()函收去取得我們要的資料集,然後我們使用資料集的 AtFirstPage() 及
AtLastPage() 函數去決定是否顯示下一頁和上一頁按鈕。
include_once('ADOdb.inc.php');
include_once('tohtml.inc.php');
session_register('curr_page');
$db = NewADOConnection('mysql');
$db->Connect('localhost','root','','xphplens');
$num_of_rows_per_page = 10; $sql =
'select * from products';
if
(isset($HTTP_GET_VARS['next_page']))
$curr_page =
$HTTP_GET_VARS['next_page'];
if (empty($curr_page)) $curr_page = 1; ## at first
page $rs = $db->PageExecute($sql,
$num_of_rows_per_page, $curr_page); if (!$rs)
die('Query Failed'); if
(!$rs->EOF &&
(!$rs->AtFirstPage() ||
!$rs->AtLastPage())) { if
(!$rs->AtFirstPage()) {
?>
href="<?php echo
$PHPSELF,'?next_page=',$rs->AbsolutePage()
- 1 ?>">Previous
page
<?php } if(!$rs->AtLastPage()) {
?>
href="<?php echo
$PHPSELF,'?next_page=',$rs->AbsolutePage()
+ 1 ?>">Next
page
<?php }rs2html($rs); } ?>
以上的程式碼可以在 testpaging.php 范例里找到www.cn403.com。零食團購網
使用自定錯誤處理及 PEAR_Error在之前的版本,你可以使用像 $con->debug=true
; 這樣的設定來進行除錯。但在 1.50 版後,我們提供了另一種方法來處理錯誤狀態。我們讓工程師可以使用 ADODB
的自訂錯誤處理程序功能。
ADODB 提供了兩種自訂處理方式,你可以配合你的的需要而修訂。第一個方法放在
ADOdb-errorhandler.inc.php 檔案里。這讓你可以使用標準的 PHP 函數 err_reporting
去控制要顯示怎樣的錯誤訊息及 trigger_error 去呼叫 PHP 預設的錯誤處理程序。
引入了上述檔案後(ADOdb-errorhandler.inc.php),當發生了下列的錯誤後,將會使得
trigger_error($errorstring,E_USER_ERROR)被呼叫。
Connect() 或 PConnect() 執行失敗時。
執行 SQL 指令的函數失敗時,如 Execute() 或 SelectLimin() 。
GenID() 進入了無限回圈時。
這里的 $errorstring 變數是由 ADODB 所產生的。而且會包含了有用的除錯訊息,類似於隨後會建立的
error.log 資料。所以,為了要能正確提供除錯訊息,你要在建立 ADOConnection 物件前,就把
ADOdb-errorhandler.inc.php 引入到程式碼中。
If you define error_reporting(0), no errors will be shown. If you
set error_reporting(E_ALL), all errors will be displayed on the
screen.
如果你設定了 error_reporting(0) 的話,將不會有任何錯誤被顯示。如果你設定了
error_reporting(E_ALL),那將會顯示所有的錯誤訊息。
以下是一個簡單的范例:
顯示所有的錯誤訊息
include('ADOdb-errorhandler.inc.php');
include('ADOdb.inc.php');
include('tohtml.inc.php'); $c =
NewADOConnection('mysql');
$c->PConnect('localhost','root','','northwind');
$rs=$c->Execute('select * from
productsz'); #不正確的資料表 productsz');
if ($rs) $rs2html($rs); ?>
如果你要把錯誤訊息記錄下來,你可以定義兩個選擇性常數 ADODB_ERROR_LOG_TYPE,
ADODB_ERROR_LOG_DEST。有關於 ADODB_ERROR_LOG_TYPE 的值,服裝團購網你可以去叁考 PHP 使用手冊中有關於 error_log
的說明。在以下的范例中,我使將它設為 3,意思是指將訊息記錄到常數 ADODB_ERROR_LOG_DEST
所設定的檔案中。
不顯示任何的錯誤訊息
define('ADODB_ERROR_LOG_TYPE',3);
define('ADODB_ERROR_LOG_DEST','C:/errors.log');
include('ADOdb-errorhandler.inc.php');
include('ADOdb.inc.php');
include('tohtml.inc.php'); $c =
NewADOConnection('mysql');
$c->PConnect('localhost','root','','northwind');
$rs=$c->Execute('select * from
productsz'); ## 不正確的資料表 productsz if ($rs)
$rs2html($rs); ?>
以下則是寫在 error.log 檔的錯誤訊息:
(2001-10-28 14:20:38) mysql error: [1146: Table
'northwind.productsz'
doesn't exist] in EXECUTE("select
* from productsz")
第二種錯誤處理方法是 ADOdb-errorpear.inc.php
。使用這種方式,團購網站大全在錯誤發生時會產生 PEAR_Error 衍生物件,而最後產生的 PEAR_Error
物件可以被 ADODB_Pear_Errir() 函數取回。
include('ADOdb-errorpear.inc.php');
include('ADOdb.inc.php');
include('tohtml.inc.php'); $c =
NewADOConnection('mysql');
$c->PConnect('localhost','root','','northwind');
$rs=$c->Execute('select * from
productsz'); #不正確的資料表 productsz');
if ($rs) $rs2html($rs); else { $e =
ADODB_Pear_Error(); echo
'
',$e->message(),'
';} ?>
在引入 ADOdb-errorpear.inc.php 檔之前,藉由定義 ADODB_PEAR_ERROR_CLASS
常數,你可以使用一個 PEAR_Error 衍生類別。為了方便除錯,你可以在 PHP 程式碼的最前面定義預設的錯誤理方式為
PEAR_ERROR_DIE,這將會使得程式一出錯,馬上就輸出錯誤訊息,并且停止執行。
include('PEAR.php');
PEAR::setErrorHandling('PEAR_ERROR_DIE');
注意,當錯誤產生時,ADODB并沒有明確的回傳一個 PEAR_Error 物件給你。你必需要去呼叫
ADODB_Pear_Error() 函數去取回最後的錯誤內容。或者,你可以使用 PEAR_ERROR_DIE 這個技巧。
總結
以上是生活随笔為你收集整理的php中adodb中文手册,[转载]ADODB中文手册(4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7 android usb驱动,在
- 下一篇: excel高效之删除空行