向 JSON 数组添加索引时数据表中断
Datatable breaks when adding indexes to JSON array
我有一个数据表,它从 php 数组转换为 JSON 数组填充,当我按原样从数据库中提取字段时一切正常,但我想添加一些计算字段作为最后几列,所以我在 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"}*/
]
});
目前我将最后两列注释掉了,因为每次我将它们添加到我的数据数组时,数据表都会报告没有找到数据,即使当我回显 [=31 时这些值显示在正确的位置=].
我的问题是:这两个变量是否遗漏了什么导致数据表出错?我有一种感觉,我可能会以某种方式将它们作为对象传递,但我认为 json_encode()
任何对此的见解都会很棒。
提前致谢
为什么不直接在SQL字符串中计算charityPortion和baddebtPortion?然后,它将成为 $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
我有一个数据表,它从 php 数组转换为 JSON 数组填充,当我按原样从数据库中提取字段时一切正常,但我想添加一些计算字段作为最后几列,所以我在 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"}*/
]
});
目前我将最后两列注释掉了,因为每次我将它们添加到我的数据数组时,数据表都会报告没有找到数据,即使当我回显 [=31 时这些值显示在正确的位置=].
我的问题是:这两个变量是否遗漏了什么导致数据表出错?我有一种感觉,我可能会以某种方式将它们作为对象传递,但我认为 json_encode()
任何对此的见解都会很棒。
提前致谢
为什么不直接在SQL字符串中计算charityPortion和baddebtPortion?然后,它将成为 $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