【发布时间】:2010-11-16 13:13:20
【问题描述】:
我有问题。我有一张支持票 (wh_task) 表。每个任务都有一个 date_completed (d/m/Y) 和 has_met_sla 字段(0 或 -1)。我想允许用户按 date_completed 搜索此表并根据结果显示图表。
图表数据必须如下所示,以便我可以填充条形图(融合图表):
年份:2010 |月份:11 月 | SLA 满足:12 | SLA 未命中:2
年份:2010 |月份:十月 | SLA 满足:15 | SLA 未命中:1
图表将在 x 轴上显示数字,在 y 轴上显示“2010 年 11 月”。沿 y 的每个月有 2 列,满足和未满足。
所以,我可以毫无问题地创建这种图表,但它生成的数据我很难想出。以下是我的查询:
$tsql = "SELECT task_id, has_met_service_level_agreement, date_completed ".
"FROM wh_task ".
"WHERE (task_status_id = 5) AND (account_id =$atid)";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false)
{
echo "Error in query preparation/execution.\n";
die( print_r( sqlsrv_errors(), true));
}
//SLA counters
$met = 0;
$missed = 0;
/* Retrieve each row as an associative array and display the results.*/
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))
{
$date = $row['date_completed'];
$monthnumber = date_format($date, "n");
$year = date_format($date, "Y");
$hasmetsla = $row['has_met_service_level_agreement'];
}
}
你能帮我看看这里的逻辑吗?我猜我需要将数据存储在一个包含月份、年份、满足总计和未满足总计的数组中。然后对于每个任务检查数组中是否已经存在年月组合,如果存在则根据 $hasmetsla 修改总计,如果不将其添加到数组中??
谢谢大家!
琼斯
【问题讨论】:
-
我也在采取必要的 SQL 注入预防措施......
-
不,你不是。您没有参数化您的查询。在这种特殊情况下,您可以避免将 $atid 显式转换为整数,但参数化查询是更好的解决方案 - 它们适用于任何数据类型,并且几乎适用于所有情况。
-
不,我只是没有将它包含在我的代码片段中,但我首先检查数据并删除不需要的东西..
标签: php arrays multidimensional-array logic