我想对具有特定 WHERE 标准的数据库列进行求和,然后将其显示在网页上,但我不确定如何执行此操作。
这是迄今为止我在控制器中的功能。
public function get_hours() {
$user_email = $this->session->userdata('USER_EMAIL');
$this->db->where('USER_EMAIL', $user_email);
$this->db->select_sum('USER_WORK_HOURS');
$data = $this->db->get('user_hours');
$hours = $data->row()->USER_WORK_HOURS;
echo $hours;
}
这会将我带到一个空白页面并且不显示任何内容。
我也尝试回显 $data,但收到错误消息,指出无法将其转换为字符串。
我尝试求和的列是 TIME 类型列。
试试这个:
public function get_hours()
{
$user_email = $this->session->userdata('USER_EMAIL');
$this->db->select('SEC_TO_TIME( SUM( TIME_TO_SEC( `USER_WORK_HOURS` ) ) ) AS totalHours');
$this->db->where('USER_EMAIL', $user_email);
$hours= $this->db->get('user_hours')->row()->totalHours;
echo $hours;
}
据我所知,你不能直接在mysql中的
SUM()
数据类型上调用TIME
。您必须先使用 TIME_TO_SEC()
函数将其转换为数字,然后再将其转换回 TIME
。
我将为您提供有关此方法的直接 SQL 示例:
SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( `USER_WORKS_HOUR` ) ) ) AS timeSum
FROM YourTableName WHERE `USER_EMAIL` = $email
也许您可以先在 phpmyadmin 上测试 SQL 查询,然后再在实际应用程序中运行。干杯!
试试这个,不确定,但可能有用。
public function get_hours()
{
$user_email = $this->session->userdata('USER_EMAIL');
$this->db->where('USER_EMAIL', $user_email);
$this->db->select_sum('USER_WORK_HOURS');
$data = $this->db->get('user_hours');
$hours = $data->row();
echo $hours->USER_WORK_HOURS;
}
试试这个
public function get_hours()
{
$user_email = $this->session->userdata('USER_EMAIL');
$this->db->where('USER_EMAIL', $user_email);
$this->db->select_sum('USER_WORK_HOURS');
$data = $this->db->get('user_hours');
$hours = $data->result();
echo $hours;
}
试试这个
public function get_hours()
{
$user_email = $this->session->userdata('USER_EMAIL');
$this->db->select('SEC_TO_TIME( SUM( TIME_TO_SEC( `USER_WORK_HOURS` ) ) ) AS workduration ');
$this->db->where('USER_EMAIL', $user_email);
$query = $this->db->get('user_hours');
$hours = $query->result();
echo $hours[0]->workduration;
}