php – 如何在CodeIgniter中组合query()和limit()方法

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 如何在CodeIgniter中组合query()和limit()方法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以在codeignITer中执行类似的操作:

publi function getcat($category_id)
{
    $query = "(SELECT cat.id,cat.title ";
    $query = $query . "From bf_categories cat ";
    $query = $query . "WHERE cat.id=" . $category_id;
    $this->db->limit(2,4);
    $records = $this->db->query($query);
    return $records->result();
}

我只是为了演示目的简化查询…但实际上它非常复杂,这就是为什么我决定使用query()方法.

但是限制子句没有包含在查询中……我已经通过在我的控制器中启用codeigniter探查器进行了验证,我可以看到查询是在没有任何限制子句的情况下运行的.

你能告诉我如何使用query()方法完成这个任务吗?

编辑1

修改了我的模型看起来像这样:

public function get_categories_and_PRoducts($limit=5,$offset=0,$category_id=null)
{
    print "<br>the function got the following offeset: $offset and limit: $limit";
    $query = "(SELECT cat.category_id,cat.title,cat.image_thumb,cat.deleted,cat.display_weight ";
            $query = $query."From bf_categories cat ";
            $query = $query."WHERE cat.parent_id=".$category_id;
    $query = $query." AND cat.category_id <>".$category_id;
    $query = $query.") UNION (";
    $query = $query."SELECT p.product_id,p.name,p.image_thumb,p.deleted,p.display_weight";
    $query = $query." FROM bf_product p ";
    $query = $query."Inner join bf_product_category cp ";
    $query = $query."on p.product_id=cp.product_id ";
    $query = $query."Where cp.category_id=".$category_id.") ?";

            $records = $this->db->query($query,array($this->db->limit(2,4)));
            return $records->result();
     }

我现在已经硬编码了极限值……但最终,我将使用传递给方法的值.不幸的是,这段代码仍然不起作用.
根据分析器,这是正在执行的内容

(SELECT cat.category_id,cat.display_weight FROM bf_categories cat WHERE cat.parent_id=3 AND cat.category_id <>3) UNION (SELECT p.product_id,p.display_weight FROM bf_product p Inner join bf_product_category cp on p.product_id=cp.product_id Where cp.category_id=3)

SELECT * FROM (`bf_categories`) WHERE `category_id` = '3' LIMIT 4,2

所以它创建了两个单独的select语句.

解决方法

这是CI中查询的样子:

$this->db->select("id,title");
$this->db->where("id",$category_id);
$this->db->from("bf_categories");
$this->db->limit($limit);
$query = $this->db->get();

if($query->num_rows() > 0)
{
   foreach($query->result() as $row)
   {
      echo $row->title;
   }
}

如果您包含完整查询,则可以更轻松地解决问题或向您展示更好,更有效的方法.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 如何在CodeIgniter中组合query()和limit()方法全部内容,希望文章能够帮你解决php – 如何在CodeIgniter中组合query()和limit()方法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。