我的模型查询:
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查询应该保持原样。
问题是,CodeIgniter默认将返回一个StdClass对象而不是一个数组,因此,如果要使用return $row[0];,则需要使用数组返回函数。
return $row[0];
从CodeIgniter的文档中:
使用 result_array()
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']; }