To find the type of columns, you need to 'query' the SQL sentence, 'fetchArray' the 1rst row, and then extract the name and type of each column.Example:function _sqlite_fetch_all( $db, $sql ) { $sqlite = new SQLite3( $db); if( $sqlite->lastErrorCode() ) return; $result = $sqlite->query( $sql ); $result->fetchArray( SQLITE3_NUM ); $fieldnames = []; $fieldtypes = []; for( $colnum=0; $colnum<$result->numColumns(); $colnum++) { $fieldnames[] = $result->columnName($colnum); $fieldtypes[] = $result->columnType($colnum); } $result->reset(); while( $row = $result->fetchArray( SQLITE3_NUM ) ) { for ($colnum=0; $colnum<count($row); $colnum++) { $col = &$row[$colnum]; if (isset($fieldtype_encode_binary[$fieldtypes[$colnum]])) $col = $fieldtype_encode_binary[$fieldtypes[$colnum]]( $col ); } unset($col); if ($resulttype == SQLITE3_ASSOC) $row = array_combine( $fieldnames, $row ); $rows[] = $row; } $result->finalize(); $sqlite->close(); return $rows;}Remark 1: The type of a column is SQLITE3_NULL before any 'fetchArray' and 'false' after last fetched row.Remark2 : The actual values of SQLITE3_INTEGER, SQLITE3_FLOAT, SQLITE3_TEXT, SQLITE3_BLOB, SQLITE3_NULL are 1, 2, 3, 4, 5.