首页 文章

错误的结果Codeigniter查询

提问于
浏览
0

我是codeigniter和php的新手 . 这是我的模特:

function getRelated($newsId, $catId){
    $this->db->select('a.id, a.category, a.title, a.photo, a.caption, a. summary, a.detail, a.page_views, b.cat_id');
    $this->db->from('news as a');
    $this->db->order_by("time", "desc");
    $this->db->join('news_categories as b', 'a.id = b.news_id');
    $this->db->where('a.id <>', $newsId);
    $this->db->where('b.cat_id', $catId);
    $query = $this->db->get();
    echo $this->db->last_query();
    return $query->result();
}

这是我的控制器:

public function detail($id, $catId){
        $this->load->model('news_model');
        $data['list'] = $this->news_model->get($id);
        $data['related'] = $this->news_model->getRelated($id, $catId);

        $this->load->view('page_header');           
        $this->load->view('news_detail', $data);            
        $this->load->view('page_footer');
}

这是视图中查询的结果:

选择a.id,a.category,a.title,a.photo,a.caption,a . 摘要,a.detail,a.page_views,b.cat_id FROM news as JOIN news_categories as b ON a.id = b.news_id WHERE a.id <>'2'AND b.cat_id ='title%20one%20test1'按时间顺序DESC

如上所示(视图),cat_id的结果是 Headers ..我的代码出了什么问题?

我的视图文件(news_detail):

<h3>Related News</h3>
<?php
$i = 0;
foreach ($related as $key => $value) {
    if (++$i > 3)
        break;
    ?>
    <div class="list">
        <a class="title" href="news/detail/<?= $value->id . "/" . $value->title ?>"><?= $value->title ?></a>
    </div>
<?php
}?>

帖子的类别是多种选择 . 因此,每个帖子都可以有多个类别 . 我该怎么办?

提前致谢

4 回答

  • 0

    替换视图文件(news_detail):

    <h3>Related News</h3>
    <?php
    $i = 0;
    foreach ($related as $key => $value) {
        if (++$i > 3)
            break;
        ?>
        <div class="list">
            <a class="title" href="news/detail/<?= $value->id . "/" . $value->cat_id ?>"><?= $value->title ?></a>
        </div>
    <?php
    }?>
    
  • 0

    你在这里犯了错误

    <a class="title" href="news/detail/<?= $value->id . "/" . $value->title ?>"><?= $value->title ?></a>
    

    当你定义任何函数时

    public function detail($id, $catId){ }
    

    那么 $id 将是方法名称 detail 之后的第一个分段,即 $value->id$catId 将是方法名称之后的第二个分段,即 $value->title .

    所以将catID添加为链接中的第二个段,如下所示 <a class="title" href="news/detail/<?= $value->id . "/" . $value->catID ?>"><?= $value->title ?></a>

  • 0

    我修改了你的代码 . 试试这个...!

    function getRelated($newsId, $catId){
            $this->db->select('a.id, a.category, a.title, a.photo, a.caption, a. summary, a.detail, a.page_views, b.cat_id');
            $this->db->from('news as a');
            $this->db->order_by("time", "desc");
            $this->db->join('news_categories as b', 'a.id = b.news_id and a.id<>'.$newID.'and b.cat_id=$catID','inner');
            $query = $this->db->get();
            echo $this->db->last_query();
            return $query->result();
    }
    
  • 0

    在视图文件(news_detail)中更改锚标记 .

    在这里,您要发送 Headers 而不是类别ID

    更换

    <a class="title" href="news/detail/<?= $value->id . "/" . $value->title?>"><?= $value->title ?></a>

    通过

    <a class="title" href="news/detail/<?= $value->id . "/" . $value->cat_id?>"><?= $value->title ?></a>
    

相关问题