我正在对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'];
?>
现在请告诉我哪里出错了。
答案 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的价值是什么,它是否包含任何特殊的字符等?