使用Codeigniter接收单个结果

时间:2014-08-19 20:10:46

标签: php mysql sql codeigniter

我的模型查询:

    public function getWorkDays ($id, $month){
    $query = $this->db->query("SELECT count(DISTINCT (day)) FROM hours WHERE userid = ? AND month = ?", array($id, $month));
    $row = $query->result();
    return $row[0];
}

我的观点:

    <p>Total Days: <?php echo var_dump($workDays); ?></p>

错误:

  

总天数:对象(stdClass)#35(1){[“count(DISTINCT(day))”] =&gt; string(1)“9”}

9应该是一个正确的值,但我无法用简单的结果回声得到它。另外我很感兴趣为什么我在结果obj中有一部分查询([“count(DISTINCT(day))”])。

我不想使用Active记录,查询应保持原样。

1 个答案:

答案 0 :(得分:2)

问题是,CodeIgniter默认返回StdClass对象而不是数组,所以如果你想使用return $row[0];,你需要使用数组返回函数。

来自CodeIgniter's Documentation

使用result_array()

此函数将查询结果作为纯数组返回,或者在未生成结果时返回空数组。通常你会在foreach循环中使用它,如下所示:

$query = $this->db->query("YOUR QUERY");

foreach ($query->result_array() as $row)
{
   echo $row['title'];
   echo $row['name'];
   echo $row['body'];
}
你可以这样做:

public function getWorkDays ($id, $month){
    $query = $this->db->query("SELECT count(DISTINCT day) as workDays FROM hours WHERE userid = ? AND month = ?", array($id, $month));
    $row = $query->result_array();
    return $row[0];
}

你还说你想要一个结果,你可能更容易做到这一点:

public function getWorkDays ($id, $month){
    $query = $this->db->query("SELECT count(DISTINCT day) as workDays FROM hours WHERE userid = ? AND month = ?", array($id, $month));
    return $query->row_array();
}

修改

这是你简单的回声...

public function getWorkDays ($id, $month){
    $query = $this->db->query("SELECT count(DISTINCT day) as workDays FROM hours WHERE userid = ? AND month = ?", array($id, $month));
    $row = $query->row_array();
    return $row['workDays'];
}