我想用某些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,但收到错误,说它无法将其转换为字符串。
以下是我的观点:
<!DOCTYPE html>
<html lang="en">
<body>
<div class="container">
<h1>Members</h1>
<?php
echo "<pre>";
print_r($this->session->all_userdata());
echo "</pre>";
$this->load->helper('date');
echo "<h2>";
echo $date = date('Y-m-d H:i:s');
echo "</h2>";
?>
<a href="<?php echo 'clock_in' ?>">Clock In</a> <br />
<br />
<a href="<?php echo 'clock_out' ?>">Clock Out</a> <br />
<br />
<a href="<?php echo 'get_hours' ?>">Get Hours</a> <br />
<br />
<a href="<?php echo 'main/logout' ?>">Logout</a> </div>
</body>
</html>
其他信息:
如果需要任何其他信息,请告知我们。
提前致谢。
编辑:
已找到答案。感谢Putu Yoga和Bishnu Paudel的帮助。
更正后的代码:
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;
}
答案 0 :(得分:2)
试试这个:
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;
}
答案 1 :(得分:1)
据我所知,您无法直接在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查询。干杯!
答案 2 :(得分:0)
试试这个,不确定但可能有用。
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;
}
答案 3 :(得分:0)
试试这个
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;
}
答案 4 :(得分:0)
试试这个
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;
}