Получить поля mysql динамически
я Создал команду select, на основе сведений, переданных пользователем, например,
$anoini = $_GET['anoini']; //variavel com ano escolhido pelo usuário
$anofim = 2016; //ano final é 2016
$s = 'SELECT pa_proc_id, procedimento, '; //inicio da query
while ($anoini < $anofim) { //laço para listar todos os anos
$s = $s . 'SUM( pa_qtdapr * ( 1 - ABS( SIGN( CONVERT( SUBSTRING( pa_cmp, 1, 4 ) , signed ) - '.$anoini.' ) ) ) ) AS a'.$anoini.', '; //a cada ano, ele inclui uma linha na query
$anoini++;
}
$s = $s . 'SUM( pa_qtdapr * ( 1 - ABS( SIGN( CONVERT( SUBSTRING( pa_cmp, 1, 4 ) , signed ) - '.$anofim.' ) ) ) ) AS a'.anofim.' '; //finaliza criando a linha com o ano atual
$s = $s . 'FROM sia WHERE pa_ufmun = "'.$ibge.'" and substring(pa_cmp,1,4) >= :anoini GROUP BY pa_proc_id'; //finaliza a query
приведенный выше код прекрасно работает и мне выдает результат с несколько полей, созданных динамически в отношении каждого года с момента, указанного пользователем в 2016 году, например, a2014, a2015, a2016
Запускаю запрос, я создаю массив:
$lista = $db->prepare($s) or trigger_error($db->error);
$lista->bindValue(":anoini",$GLOBALS['anoini']);
$lista->execute();
$GLOBALS['procedimento'] = $lista->fetchAll(PDO::FETCH_ASSOC);
Мой вопрос: как узнать, какие поля (a2014, a2015, etc) были созданы и, как давать "эхо" в них?
РЕДАКТИРОВАТЬ
я var_dump, и этот результат был ниже):
array (size=130)
0 =>
array (size=9)
'pa_proc_id' => string '0101010010' (length=10)
'procedimento' => string 'ATIVIDADE EDUCATIVA / ORIENTACAO EM GRUPO NA ATENCAO BASICA ' (length=60)
'a2010' => string '0' (length=1)
'a2011' => string '0' (length=1)
'a2012' => string '0' (length=1)
'a2013' => string '0' (length=1)
'a2014' => string '0' (length=1)
'a2015' => string '0' (length=1)
'a2016' => string '67' (length=2)
1 =>
array (size=9)
'pa_proc_id' => string '0101020015' (length=10)
'procedimento' => string 'ACAO COLETIVA DE APLICACAO TOPICA DE FLUOR GEL' (length=46)
'a2010' => string '0' (length=1)
'a2011' => string '0' (length=1)
'a2012' => string '0' (length=1)
'a2013' => string '0' (length=1)
'a2014' => string '0' (length=1)
'a2015' => string '0' (length=1)
'a2016' => string '23' (length=2)
2 =>
array (size=9)
'pa_proc_id' => string '0101020031' (length=10)
'procedimento' => string 'ACAO COLETIVA DE ESCOVACAO DENTAL SUPERVISIONADA' (length=48)
'a2010' => string '0' (length=1)
'a2011' => string '0' (length=1)
'a2012' => string '0' (length=1)
'a2013' => string '0' (length=1)
'a2014' => string '0' (length=1)
'a2015' => string '0' (length=1)
'a2016' => string '184' (length=3)
Как перечислить имена полей, а не значения (в этом случае a2010 до a2016)?
Объятия.
4
Author: Italo Rodrigo, 2016-11-04
2 answers
РЕШИЛ:
Использую следующий код в цикл, чтобы знать, если существуют поля и даю эхо в них.
if (isset($linha[0]['a'.$anoini])){
echo $linha[0]['a'.$anoini];
}
Обнять всех, кто помог
3
Author: Italo Rodrigo, 2016-11-04 19:08:59
И Вы будете выполнять цикл, и внутри этого цикла принесет результат на "эхо".
Например:
while($rs = $lista->fetchAll(PDO::FETCH_ASSOC)){
$var1 = $rs['campo_da_tabela'];
...
}
0
Author: Tiago Pereira Cardoso, 2016-11-04 19:35:22