这个问题可能有点傻,但我不明白:
我的模型中有这两个函数
public function count()
{
return $this->db->num_rows();
}
public function changes()
{
return $this->db->affected_rows();
}当我在控制器中调用changes();时,它会显示上一次(更新)查询的受影响行。但是,当我使用count();显示最后一个(select)查询的行时,我得到一个错误..
控制器中的代码如下所示:
if (!$this->synchronization_model->get_contact_knowledge($contact['account_id'], SERVER_LOCATION_ID)) {
throw new Exception("Failed to update knowledge");
}
if( $this->synchronization_model->count() == 0) {
$this->synchronization_model->insert_knowledge($contact['account_id'], $contact_server_time);
}有没有办法修复或解决这个问题?
发布于 2013-01-26 00:28:53
下面是我如何正确地修复这个问题。
而不是这个函数:
public function check_account_already_exists($email_address)
{
if ($query = $this->db->query('SELECT * FROM account WHERE email_address = ?', array($email_address)))
{
return true;
}
}我有这个函数:
public function check_account_already_exists($email_address)
{
if ($query = $this->db->query('SELECT * FROM account WHERE email_address = ?', array($email_address)))
{
return $query;
}
}所以当我在我的控制器中调用它时:
// Check whether the e-mail address has not already been taken
if (!($count = $this->account_model->check_account_already_exists($email_address))) {
throw new Exception("Failed to fetch account");
}
$this->account_model->count($count);我可以像那样使用它..这样,上面的if语句仍将以相同的方式工作。
发布于 2013-01-25 23:30:41
num_rows()不是db类的方法。应该针对resultset对象调用它。
$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_rows();正如您在这里看到的,我们调用的不是$this->db->num_rows(),而是$query->num_rows();
作为变通办法,您可以将query对象传递给count()方法,如下所示:
public function count($query)
{
return $query->num_rows();
}更新:
根据您的更新代码,我建议如下:
我假设查询是在synchronization_model中执行的。在这种情况下,你应该做的是。在synchronization_model中有一个变量,比如row_count。并将num_rows()返回的值放入此变量中。count()中的只返回这个变量。因此,它将类似于:
synchronization_model内幕
......
$query = $this->db->query('SELECT * FROM my_table');
$this->row_count = $query->num_rows();
......
public function count()
{
return $this->row_count;
}
......发布于 2013-01-25 23:23:00
$this->db->num_rows();返回结果在选择时所读取的行数,则需要将此用作
$query = $this->db->get('table');
OR
$query = $this->db->query('select * from table');
$query->num_rows();return $this->db->affected_rows();
是否返回更新、删除或插入时受影响的行
相关的代码在哪里,以便我们可以看到它。
https://stackoverflow.com/questions/14524832
复制相似问题