高級材料
假設現在你要把下面的數據插入到數據庫中.
當你使用另外一個數據庫的時候,你的插入操作可能不會成功。
第一個問題是每個數據庫都有不同的默認日期格式。MySQL默認格式是YYYY-MM-DD ,然而其它數據庫有不同的默認格式。ADODB有一個DBDate()的函數,它能將日期轉換成正確的格式。
接下來的一個問題是Note字段值裡的don't 應該作為引文。在MySQL中,使用don't 來解決這個問題,但在一些其它的數據庫中(Sybase, Access, MicrosoftSQL 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 字節寬度).