2009年2月7日 星期六

PHP - ADODB $ADODB_FETCH_MODE 決定資料集以那種方式將資料傳給陣列

$ADODB_FETCH_MODE 這個全域變數決定了資料集以那種方式將資料傳給陣列,資料集在被建立時(如 Execute() 或 SelectLimit() )會把本變數 $ADODB_FETCH_MODE 的值保存下來,而隨後本變數 $ADODB_FETCH_MODE 的任何改變都不會影響到現存的資料集,只有在以後資料集被建立起來時才會改變。

以下為為已定義的常數:

define('ADODB_FETCH_DEFAULT',0);
define('ADODB_FETCH_NUM',1);
define('ADODB_FETCH_ASSOC',2);
define('ADODB_FETCH_BOTH',3);

以下為一個使用的例子:

在本範例中,如你所見兩個資料集在被 Execute() 建立時,會依據 $ADODB_FERCH_MODE 的值來決定儲存及使用的存取模式。

如果沒有任何的模式被定義,預設值則是 ADODB_FETCH_DEFAULT。呈現的預設模式則依據資料庫驅動程式而有所不同,所以不要依賴 ADODB_FETCH_DEFAULT。為了可攜性,我們建議你固定為 ADODB_FETCH_NUM 及 ADODB_FETCH_ASSOC,因為有許多驅動程式並不支援 ADODB_FETCH_BOTH。

假如你有多個連結物件,並且想要有不同的 fetch 模式給每個連結,那麼就使用 SetFetchMode() 函數,一旦連結的物件呼叫這個函數,那麼連結物件會忽略全域變數 $ADODB_FETCH_MODE 並且自己會使用內部的 fetchMode 屬性。

要取得之前的 fetch 模式,你可以使用檢查 $db->fetchMode 屬性,或使用 SetFetchMode() 的傳回值。

沒有留言: