0

我正在对codeigniter进行一些练习以从数据库中检索数据,并且我成功地做到了这一点。但是当我想获取特定字段的数据时就会出现问题。要检索我在本地主机上使用以下 URL 的特定值:

localhost/codeigniter/index.php/news/view/city-news

其中 news 是控制器,view 是控制器的方法,city-news 是参数。

这是我的控制器代码

public function view($slug)
    {

        $data['news'] = $this->news_model->get_news($slug);//here i am getting the slug value.
                if (empty($data['news_item']))
            {
        show_404();
            }

        $data['title'] = $data['news_item']['title'];

        $this->load->view('templates/header', $data);
        $this->load->view('news/view', $data);
        $this->load->view('templates/footer');
    }

这个方法调用了模型news_model的get_news($slug)方法。下面是这个方法的代码:

public function get_news($slug = FALSE)
   {

    if ($slug === FALSE)
    {
        $query = $this->db->get('news');
        return $query->result_array();
    }
    echo $slug;//here is i m also getting the slug value.
    $query = $this->db->get_where('news', array('slug' => $slug));//i think this is not working properly
    print_r($query->row_array());die;//now i am getting values here.   
    return $query->row_array();
   } 

但我的视图仍然显示“找不到 404 页面”。我的视图代码是:

<?php
echo '<h2>'.$news_item['title'].'</h2>';
echo $news_item['text'];
?>

现在请告诉我哪里出错了。

4

5 回答 5

5

您的错误是您正在设置$data['news']和测试$data['news_item']

$data['news'] = $this->news_model->get_news($slug);//here i am getting the slug value.

if (empty($data['news_item'])) // <=== HERE IS THE ERROR
{
    show_404();
}
于 2012-08-24T12:31:25.967 回答
0

这是控制器的清理代码:

public function view($slug)
{

    $news = $this->news_model->get_news($slug);
            if (empty($news))
        {
    show_404();
        }

    $data['title'] =$news['title'];
    $data['text'] = $news['text'];

    $this->load->view('templates/header', $data);
    $this->load->view('news/view', $data);
    $this->load->view('templates/footer');
}

该方法调用模型news_model的get_news($slug)方法:

public function get_news($slug = FALSE)
{

if ($slug === FALSE)
{
    $query = $this->db->get('news');
    return $query->result_array();
}
echo $slug;
$query = $this->db->get_where('news', array('slug' => $slug));
print_r($query->row_array());die;//now i am getting values here.   
return $query->row_array();

}

<?php echo '<h2>'.$title.'</h2>'; echo
$text; ?>
于 2012-08-24T12:47:14.100 回答
0

一个小错误:这里

if (empty($data['news_item'])) // <=== put "news" here
{
    show_404();
}

并在您看来尝试获取数据

echo $news;
于 2012-08-27T07:37:23.017 回答
0

您是否尝试过where如下简单查询

$data = $this->db->where('slug', $slug)->from('news');

你必须把东西放进去$data。意味着至少 mysql 对象。数据库中的行是否可用是另一部分。

其次我担心真假。意味着据我所知Boolean,商店INT(1)意味着 0 或 1。你也需要检查一下。

你可以调试你的查询

$this->db->last_query();

希望这可以帮助。

于 2012-08-24T12:13:34.127 回答
-1

die() 是一个使用 exit 代替的函数。

在脚本的开头设置它

ini_set('display_errors', 1);
error_reporting(E_ALL);

也使用 var_dump($query); 如果在调用查询时没有引发异常或致命错误,则检查它是否返回任何结果

如果数组为空,则表示数据库中没有此 slug 的消息。当没有找到特定新闻时,您应该设置一些条件

还有这个蛞蝓的价值是什么,它是否包含任何特殊字符等?

于 2012-08-24T11:47:37.137 回答