我有一个数据表,它从转换为JSON数组的php数组中填充,当我从数据库中按原样提取字段时,一切都很好,但我想添加一些计算字段作为最后几列,所以我在php中这样做了:
foreach ($in as $id){
$query = $link->prepare("SELECT provider_num, provider_name, 233_net_charity_care, 291_cost_of_non_mcr_bad_debts, 301_cost_of_uncomp_care
FROM `s10`
WHERE `id` = :id");
$query->bindParam(':id', $id, PDO::PARAM_INT);
$query->execute();
$results = $query->fetch(PDO::FETCH_ASSOC);
if($results['301_cost_of_uncomp_care'] != 0){
$charityPortion = ($results['233_net_charity_care'] / $results['301_cost_of_uncomp_care']);
$baddebtPortion = ($results['291_cost_of_non_mcr_bad_debts'] / $results['301_cost_of_uncomp_care']);
} else {
$charityPortion = 0;
$baddebtPortion = 0;
}
$data[] = $results;
/*$data['charityPortion'] = $charityPortion;
$data['baddebtPortion'] = $baddebtPortion;*/
}
然后它变成一个json变量,传递到数据表init var tableData = <?php echo json_encode($data); ?>;
然后我用json:初始化数据表
$('#compTab').dataTable({
"aaData": tableData,
"aoColumns": [
{ "data": "provider_num" },
{ "data": "provider_name" },
{ "data": "233_net_charity_care" },
{ "data": "291_cost_of_non_mcr_bad_debts" },
{ "data": "301_cost_of_uncomp_care" }
/*{ "data": "charityPortion"},
{ "data": "baddebtPortion"}*/
]
});
目前,我已经注释掉了最后两列,因为每次我将它们添加到数据数组中时,datatables都会报告没有找到任何数据,尽管当我回显JSON时,值会显示在正确的位置。
我的问题是:这两个变量中是否有我遗漏的东西导致数据表出错?我有一种感觉,我可能会以某种方式将它们作为物体传递,但我认为json_encode()
涵盖了这一点
对此有任何见解都会很棒。
提前感谢
为什么不直接在SQL字符串中计算charityPartition和baddebtPartition?然后,它将成为$results:的一部分
SELECT provider_num, provider_name, 233_net_charity_care,
291_cost_of_non_mcr_bad_debts, 301_cost_of_uncomp_care,
if('301_cost_of_uncomp_care' != 0,
('233_net_charity_care' / '301_cost_of_uncomp_care'), 0) As charityPortion,
if('301_cost_of_uncomp_care' != 0,
('291_cost_of_non_mcr_bad_debts' / '301_cost_of_uncomp_care'),0) As baddebtPortion
FROM `s10`
WHERE `id` = :id