簡體   English   中英

錯誤的結果代碼點火器查詢

[英]Wrong Result Codeigniter Query

我是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 ida categorya titlea photoa captiona summarya detaila page_viewsb cat_id FROM news作為a JOIN news_categoriesb ON a id = b news_id WHERE a id <>'2'和b cat_id ='title%20one%20test1'按time排序DESC

正如您在上方(視圖)所看到的,cat_id的結果是title ..我的代碼有什么問題?

我的查看文件(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
}?>

職位類別是多項選擇。 因此,每個帖子可以有多個類別。 我該怎么辦?

提前致謝

我已經修改了您的代碼。 嘗試這個...!

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

你在這里做錯了

<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>

更改視圖文件中的定位標記(news_detail)。

在這里,您發送的是標題而不是類別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>

替換視圖文件(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
}?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM