高級材料 Insert 和 Update 假設現在你要把下面的數據插入到數據庫中. ID = 3 TheDate=mktime(0,0,0,8,31,2001) /* 31st August 2001 */ Note= sugar why don't we call it off 當你使用另外一個數據庫的時候,你的插入操作可能不會成功。 第一個問題是每個數據庫都有不同的默認日期格式。mysql默認格式是YYYY-MM-DD , 然而其它數據庫有不同的默認格式。ADODB有一個DBDate()的函數,它能將日期轉 換成正確的格式。 接下來的一個問題是Note字段值裡的don't 應該作為引文。在MySQL中,使用 don\'t 來解決這個問題,但在一些其它的數據庫中(Sybase, Access, Microsoft SQL Server)使用don''t 。qstr()解決了這個問題。 那麼我們怎麼使用這個函數呢? 像下面這樣: $sql = "INSERT INTO table (id, thedate,note) values (" . $ID . ',' . $db->DBDate($TheDate) .',' . $db->qstr($Note).")";$db->Execute($sql);ADODB 也支持 $connection->Affected_Rows() (返回上次update或delete操作影響的 行數) 和 $recordset->Insert_ID() (返回insert聲明生成的上一個自增編號)。但要 說明的是不是所有的數據庫都支持這兩個函數。
MetaTypes 你可以找到更多關於你調用recordset的方法FetchField($fieldoffset)所選擇的每個 字段(我同時使用字段和列這兩個詞)的信息。它將返回一個有三個屬性(名稱,類 型和最大長度)的對象。 例如:$recordset = $conn->Execute("select adate from table"); $f0 = $recordset->FetchField(0);那麼 $f0->name 的值將被設為 'adata', $f0->type 的值將被設為 'date'. 如果 max_length 未知,它被設為-1。 處理不同類型的數據庫的一個問題是每個數據庫常常用不同的名字來調用相同的類型。 例如timestamp 類型在某一個數據庫中叫做datetime 類型,而在另一個是叫做time 類型。 因此 ADODB 有個專門的 MetaType($type, $max_length) 函數對下面的類型 進行標准化: C: character 和 varchar 類型 X: text 或者 long character (例如.多於255 字節寬度). B: blob 或者 binary 圖像 D: date T: timestamp L: logical (boolean) I: integer N: numeric (float, double, money) 在上面的例子中, $recordset = $conn->Execute("select adate from table"); $f0 = $recordset->FetchField(0); $type = $recordset->MetaType($f0->type, $f0->max_length); print $type; /* 應該顯示 'D' */
Select Limit 和 Top 支持 ADODB 有一個叫$connection->SelectLimit($sql,$nrows,$offset)的函數,它允許你 獲得一個記錄集(recordset)的子集。它會在Microsoft產品上使用本地的SELECT TOP, 在PostgreSQL和MySQL上使用SELECT ... LIMIT,並在不支持這項功能的數據庫上模擬 這個功能。
緩存支持 ADODB 允許你在你的文件系統上緩存記錄集結果,只需用$connection->CacheExecute($secs2cache,$sql) 和$connection->CacheSelectLimit($secs2cache,$sql,$nrows,$offset)在指定的超時 時間段後重新向數據庫服務器發出查詢。
PHP4 Session 處理接口支持 ADODB 也支持PHP4 session 處理接口. 你可以使用ADODB在一個數據庫中存儲你的 session變量。要獲得更多下信息,訪問http://php.weblogs.com/adodb-sessions
鼓勵作為商業用途 如果你正計劃編寫你要轉售的商業PHP軟件產品,你應該考慮ADODB。ADODB使用GPL發 布。這意味這你也可以在商業軟件中合法的使用它,同時保持你的代碼所有權。十分 鼓勵ADODB作為商業用途!因為上述的原因我們內部也正在使用它。
結束語 作為你能耐心的看完這篇文章的答謝,下面是let's call the whole thing off 的