Retornar campos em consulta de banco SQL Server

Boa tarde pessoal, estou fazendo uma aplicação blank com SC7 e que precisa retornar os resultados de um select em JSON, porém o JSON não fica correto porque os resultados não vêem com o nome do campo na chave do array (as chaves estão numéricas de 0 pra cima). O meu código está assim:

$sql = "SELECT * FROM site.dbo.tb_unidades"; sc_select(dados, $sql); $result = array(); while (!$dados->EOF){ $result[] = $dados->fields; $dados->MoveNext(); } $dados->Close(); echo json_encode($result);
Ele retorna o seguinte JSON:

[ [ 1, "0", "Unidade 1", "image1", " " ] ]
Quando na verdade deveria retornar:

[ { "id":1, "tipo":"0", "nome":"Unidade 1", "image":"image1", "texto":" " } ]

Estude as macros do Scriptcase:

http://www.scriptcase.com.br/docs/pt_br/v9/manual/14-macros/01-visao-geral/#sc_set_fetchmode

Obrigado pela ajuda Haroldo, porém estou usando a versão 7 do Script Case e o sc_set_fetchmode está dando erro 500. Procurei na documentação também por alguma função correspondente, mas não encontrei. Não é possível realizar nesta versão?

depois do sc_select(rs, "select * … de um var_dump($rs);

O resultado foi este:

array(1) { [0]=> array(5) { [0]=> float(1) [1]=> string(1) "0" [2]=> string(82) "Unidade 1" [3]=> string(48) "image1" [4]=> string(1) " " } }

não é só isso mas tudo bem, poderá ver que no array de resultado vc tem o nome da coluna e em seguida seu valor.

Me confundi, mandei o resultado tratado. Segue o correto:

object(ADORecordset_mssql)#16 (29) { ["databaseType"]=> string(5) "mssql" ["canSeek"]=> bool(true) ["hasFetchAssoc"]=> bool(true) ["dataProvider"]=> string(6) "native" ["fields"]=> array(5) { [0]=> float(1) [1]=> string(1) "0" [2]=> string(82) "Unidade 1" [3]=> string(48) "image1" [4]=> string(1) " " } ["blobSize"]=> int(100) ["sql"]=> string(34) "SELECT * FROM site.dbo.tb_unidades" ["EOF"]=> bool(false) ["emptyTimeStamp"]=> string(6) "&nbsp;" ["emptyDate"]=> string(6) "&nbsp;" ["debug"]=> bool(false) ["timeCreated"]=> int(0) ["bind"]=> bool(false) ["fetchMode"]=> int(0) ["connection"]=> object(ADODB_mssql)#7 (84) { ["databaseType"]=> string(5) "mssql" ["dataProvider"]=> string(5) "mssql" ["replaceQuote"]=> string(2) "''" ["fmtDate"]=> string(7) "'Y-m-d'" ["fmtTimeStamp"]=> string(13) "'Y-m-d H:i:s'" ["hasInsertID"]=> bool(true) ["substr"]=> string(9) "substring" ["length"]=> string(3) "len" ["hasAffectedRows"]=> bool(true) ["metaDatabasesSQL"]=> string(52) "select name from sysdatabases where name <> 'master'" ["metaTablesSQL"]=> string(742) "select name,case when type='U' then 'T' else 'V' end from sysobjects where (type='U' or type='V') and (name not in ('sysallocations','syscolumns','syscomments','sysdepends','sysfilegroups','sysfiles','sysfiles1','sysforeignkeys','sysfulltextcatalogs','sysindexes','sysindexkeys','sysmembers','sysobjects','syspermissions','sysprotects','sysreferences','systypes','sysusers','sysalternates','sysconstraints','syssegments','REFERENTIAL_CONSTRAINTS','CHECK_CONSTRAINTS','CONSTRAINT_TABLE_USAGE','CONSTRAINT_COLUMN_USAGE','VIEWS','VIEW_TABLE_USAGE','VIEW_COLUMN_USAGE','SCHEMATA','TABLES','TABLE_CONSTRAINTS','TABLE_PRIVILEGES','COLUMNS','COLUMN_DOMAIN_USAGE','COLUMN_PRIVILEGES','DOMAINS','DOMAIN_CONSTRAINTS','KEY_COLUMN_USAGE','dtproperties'))" ["metaColumnsSQL"]=> string(251) "select c.name,t.name,c.length, (case when c.xusertype=61 then 0 else c.xprec end), (case when c.xusertype=61 then 0 else c.xscale end) from syscolumns c join systypes t on t.xusertype=c.xusertype join sysobjects o on o.id=c.id where o.name='%s'" ["hasTop"]=> string(3) "top" ["hasGenID"]=> bool(true) ["sysDate"]=> string(49) "convert(datetime,convert(char,GetDate(),102),102)" ["sysTimeStamp"]=> string(9) "GetDate()" ["_has_mssql_init"]=> bool(true) ["maxParameterLen"]=> int(4000) ["arrayClass"]=> string(24) "ADORecordSet_array_mssql" ["uniqueSort"]=> bool(true) ["leftOuter"]=> string(2) "*=" ["rightOuter"]=> string(2) "=*" ["ansiOuter"]=> bool(true) ["poorAffectedRows"]=> bool(true) ["identitySQL"]=> string(23) "select SCOPE_IDENTITY()" ["uniqueOrderBy"]=> bool(true) ["_bindInputArray"]=> bool(true) ["_dropSeqSQL"]=> string(13) "drop table %s" ["database"]=> string(4) "SITE" ["host"]=> string(9) "10.49.4.9" ["user"]=> string(12) "user" ["password"]=> string(12) "password" ["debug"]=> bool(false) ["maxblobsize"]=> int(262144) ["concat_operator"]=> string(1) "+" ["random"]=> string(6) "rand()" ["upperCase"]=> string(5) "upper" ["true"]=> string(1) "1" ["false"]=> string(1) "0" ["nameQuote"]=> string(1) """ ["charSet"]=> bool(false) ["emptyDate"]=> string(6) "&nbsp;" ["emptyTimeStamp"]=> string(6) "&nbsp;" ["lastInsID"]=> bool(false) ["hasLimit"]=> bool(false) ["readOnly"]=> bool(false) ["hasMoveFirst"]=> bool(false) ["hasTransactions"]=> bool(true) ["genID"]=> int(0) ["raiseErrorFn"]=> bool(false) ["isoDates"]=> bool(false) ["cacheSecs"]=> int(3600) ["memCache"]=> bool(false) ["memCacheHost"]=> NULL ["memCachePort"]=> int(11211) ["memCacheCompress"]=> bool(false) ["noNullStrings"]=> bool(false) ["numCacheHits"]=> int(0) ["numCacheMisses"]=> int(0) ["pageExecuteCountRows"]=> bool(true) ["autoRollback"]=> bool(false) ["fnExecute"]=> bool(false) ["fnCacheExecute"]=> bool(false) ["blobEncodeType"]=> bool(false) ["rsPrefix"]=> string(13) "ADORecordSet_" ["autoCommit"]=> bool(true) ["transOff"]=> int(0) ["transCnt"]=> int(0) ["fetchMode"]=> bool(false) ["null2null"]=> string(4) "null" ["_oldRaiseFn"]=> bool(false) ["_transOK"]=> NULL ["_connectionID"]=> resource(30) of type (mssql link) ["_errorMsg"]=> bool(false) ["_errorCode"]=> bool(false) ["_queryID"]=> resource(39) of type (mssql result) ["_isPersistentConnection"]=> bool(false) ["_evalAll"]=> bool(false) ["_affected"]=> bool(false) ["_logsql"]=> bool(false) ["_transmode"]=> string(0) "" ["bol_sc_debug"]=> bool(false) ["bol_sc_debug_level"]=> int(0) ["databaseName"]=> string(4) "SITE" } ["_numOfRows"]=> int(5) ["_numOfFields"]=> int(5) ["_queryID"]=> resource(39) of type (mssql result) ["_currentRow"]=> int(0) ["_closed"]=> bool(false) ["_inited"]=> bool(true) ["_obj"]=> NULL ["_names"]=> NULL ["_currentPage"]=> int(-1) ["_atFirstPage"]=> bool(false) ["_atLastPage"]=> bool(false) ["_lastPageNo"]=> int(-1) ["_maxRecordCount"]=> int(0) ["datetime"]=> bool(false) }

Como pode ver, o array de resultado não está trazendo o nome da coluna.

não sei se me lembro bem, mas tente algo como:

$_conn = ‘nome da sua conexão’;

eval($_conn.’->SetFetchMode(ADODB_FETCH_ASSOC);’);

Acabou que este não funcionou, mas me deu a luz pra achar a solução. Visualizando o código fonte eu achei a variável $this->DB e bastou adicionar o código abaixo antes de executar o sc_select:

$this->Db->SetFetchMode(ADODB_FETCH_ASSOC);

Obrigado pela ajuda Haroldo!