admin

使用Codeigniter接收单个结果

sql

我的模型查询:

    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>

错误:

总天数:object(stdClass)#35(1){[“” count(DISTINCT(day))“] => string(1)” 9“}

9应该是正确的值,但是我无法通过简单的结果回显来获取它。我也很感兴趣,为什么我对查询结果obj([“
count(DISTINCT(day))”])有一部分查询。

我不想使用Active Record查询应该保持原样。


阅读 188

收藏
2021-06-07

共1个答案

admin

问题是,CodeIgniter默认将返回一个StdClass对象而不是一个数组,因此,如果要使用return $row[0];,则需要使用数组返回函数。

CodeIgniter的文档中

使用 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'];
}
2021-06-07