If you have multiple connection objects, and want to have different fetch modes for each connection, then use SetFetchMode. Once this function is called for a connection object, that connection object will ignore the global variable
$ADODB_FETCH_MODE and will use the internal fetchMode property exclusively.
Use as a getter
without an argument to return the current fetch mode
|ADODB_FETCH_DEFAULT||0||The recordset is returned in the default provided by the PHP driver. Use of this value is not recommended if writing cross-database applications|
|ADODB_FETCH_NUM||1||The recordset is returned as a numeric array|
|ADODB_FETCH_ASSOC||2||The recordset is returned as an associative array|
|ADODB_FETCH_BOTH||3||The record is returned as both a numeric and associative arrays. This option is not supported by all databases|
$db->setFetchMode(ADODB_FETCH_NUM); $rs1 = $db->execute('select * from table'); $db->setFetchMode(ADODB_FETCH_ASSOC) $rs2 = $db->execute('select * from table'); print_r($rs1->fields); /* shows _array(=>'v0',  =>'v1') */ print_r($rs2->fields); /* * shows _array(['col1']=>'v0', ['col2'] =>'v1') */
Some databases support a 'Fetch Both' mode, which can be set using
ADODB_FETCH_MODE. In this mode, the recordset contains data as both a numeric and an associative array, interspersed.
$db->setFetchMode(ADODB_FETCH_BOTH) $rs3 = $db->execute('select * from table'); print_r($rs3->fields); /* shows _array(=>'v0', ['col1']=>'v0',  =>'v1', ['col2']=>'v1' ) */