Codeigniter DB与slug

时间:2015-12-23 01:47:52

标签: php codeigniter

尝试在网址中传递 slug 的数据时,我遇到了麻烦。

 public function news($slug = "")
    {
        $query = $this->db->get_where('news', array("slug", $slug));
        $row = $query->row_array();                    

    }

如果我试着回应'信息,例如echo $row["message"];我看到空白页面。 = /

我做错了什么?

2 个答案:

答案 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中,控制器方法名称中的下划线会自动将它们设为私有,因此无法公开访问它们。通常,如果表单或搜索失败 - 请调用一个单独的方法,明确说明某些内容未找到或失败。这样,您可以将视图分开,因为视图经常更改。否则,如果条件及其混乱,你会在里面堆积完全不同类型的视图文件。