如何从数据库中获取值,求和,并在codeigniter中显示它们?

时间:2016-01-05 05:10:17

标签: php mysql database codeigniter mysqli

我想用某些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>

其他信息:

  • 我想要求和的列是phpmyadmin中的TIME格式

如果需要任何其他信息,请告知我们。

提前致谢。

编辑:

已找到答案。感谢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;

} 

5 个答案:

答案 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;
}