gpt4 book ai didi

php - CodeIgniter num_rows 和 affected_rows 上下文

转载 作者:行者123 更新时间:2023-11-29 02:30:08 25 4
gpt4 key购买 nike

这可能是一个有点愚蠢的问题,但我不明白:

我的模型中有这两个函数

public function count()
{
return $this->db->num_rows();
}

public function changes()
{
return $this->db->affected_rows();
}

当我在 Controller 中调用 changes(); 时,它会显示上次(更新)查询的受影响行。但是,当我使用 count(); 来显示最后一个(选择)查询的行时,出现错误..

Controller 中的代码是这样的:

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);
}

有什么方法可以解决这个问题吗?

最佳答案

num_rows() 不是 db 类的方法。它应该针对 resultset 对象调用。

$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_rows();

正如您在这里看到的,我们没有调用 $this->db->num_rows(),而是调用了 $query->num_rows();

作为解决方法,您可以像这样将查询对象传递给 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;
}
......

关于php - CodeIgniter num_rows 和 affected_rows 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com