尝试在网址中传递 slug 的数据时,我遇到了麻烦。
public function news($slug = "")
{
$query = $this->db->get_where('news', array("slug", $slug));
$row = $query->row_array();
}
如果我试着回应'信息,例如echo $row["message"];
我看到空白页面。 = /
我做错了什么?
答案 0 :(得分:1)
$query = $this->db->get('news', array("slug", $slug))->row_array();
或
$query = $this->db->where( "slug", $slug)->get('news')->row_array();
var_dump($query);
答案 1 :(得分:0)
在我看来,这不是一个好主意
public function news($slug = "")
唯一可以接受的方法是,方法参数可以为空白,如果该方法在没有它的情况下仍然有效。在这种情况下,它赢了。 无论如何我们写出来
// the fields you want
$this->db->select( 'id,and,oh,here,are,some,fields' );
// the where condition
$this->db->where( 'slug', $slug);
// the table name and create the query
$query = $this->db->get( 'news' );
现在在将$ query发送到世界之前,请确保使用num_rows()确认它有一条记录
if ( $query->num_rows() == 1 ) { return $query->row_array(); }
// so you also have the option to check for and return a group of records
// but the rules this time are one article only, so return false
else{ return false ; }
现在在您的控制器中,假设您的模型被称为类似文章,请执行类似这样的操作
$slug = 'something that has already been validated' ;
// if no article came back, do something else
if( ! $article = $this->articles->news($slug) )
{
// no article came back
// show appropriate view
$this->_showNoArticleFor($slug) ;
}
else{ $this->_showFound($article) ; }
在codeigniter中,控制器方法名称中的下划线会自动将它们设为私有,因此无法公开访问它们。通常,如果表单或搜索失败 - 请调用一个单独的方法,明确说明某些内容未找到或失败。这样,您可以将视图分开,因为视图经常更改。否则,如果条件及其混乱,你会在里面堆积完全不同类型的视图文件。