【问题标题】:modify and redo last query in codeigniter在 codeigniter 中修改和重做最后一个查询
【发布时间】:2011-11-12 15:19:26
【问题描述】:

我可以获取使用活动记录类进行的最后一个查询并修改它的某些部分并在 codeigniter 中重做该查询吗?我正在尝试获取分页的总页数。我无法直接编写我的查询,因为它是在运行时在一些 for 循环和 if 语句中动态创建的,具体取决于提交到页面的表单。

【问题讨论】:

  • @Repox 这两个问题涵盖了相关但不同的主题。我不认为这是您提到的问题的重复。
  • 这两个问题在任何情况下看起来都非常相关。你有什么理由不回应你得到的答案?有任何问题吗?

标签: php mysql codeigniter activerecord


【解决方案1】:

您是否因为总页数而运行查询两次?如果是,请检查 SQL 中的SQL_CALC_FOUND_ROWSFOUND_ROWS()

$this->db->select("SQL_CALC_FOUND_ROwS id",false);
$this->db->any_AR_function(....);
$this->db->limit(...);
$result = $this->db->get();

在这之后你可以这样称呼:

$this->db->select("FOUND_ROWS() as count",false);
$count = $this->db->get();

我希望这是你想要的。

【讨论】:

  • 这确实是我想要的。我需要把表名放在 get 部分吗?
  • 在最近的通话中(FOUND_ROWS() as count)不需要。在第一个查询 (any_AR_function) 中,您应该这样做。见dev.mysql.com/doc/refman/5.0/en/…
【解决方案2】:

您可以使用以下方法获取最后一个查询:

$last_query = $this->db->last_query();

你可以修改这个查询然后做:

$query = $this->db->query($modified_query);
foreach($query->result() as $row)
{

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-22
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多