具体数据不会出现在codeigniter中

时间:2012-08-24 11:42:34

标签: php codeigniter

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

localhost/codeigniter/index.php/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'];
?>

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

5 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

您是否尝试使用简单的where查询,如下所示

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

你必须在$data中得到一些东西。至少意味着mysql对象。另一部分是数据库中是否有行可用。

其次我担心真假。根据我知道Boolean存储为INT(1)的方式意味着0或1.您还需要检查它。

您可以使用

调试查询
$this->db->last_query();

希望这有帮助。

答案 2 :(得分: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; ?>

答案 3 :(得分:0)

一个小错误: 这里

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

并在您的视图中尝试将数据作为

echo $news;

答案 4 :(得分:-1)

die()是一个函数使用退出而不是。

在脚本

的开头设置它
ini_set('display_errors', 1);
error_reporting(E_ALL);

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

如果数组为空,则意味着没有带有此slug的消息在db中。您应该在未找到特定新闻时设置一些条件

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