验证检查返回NULL

时间:2013-10-23 05:08:39

标签: php codeigniter

我不确定为什么我仍然得到NULL的答案,即使它确实存在于数据库中。我也得到了一个不在DB中的值,它应该被插入。

型号:

function pageURLCheck($title, $id)
{
    $this->db->select('post_title, website_id');
    $this->db->where('post_title', $title);
    $this->db->where('website_id', $id);

    $query = $this->db->get($this->_table['posts']);
}

控制器:

$urlCheck = $this->page_model->pageURLCheck($post['post_title'],  $website_id);

if($urlCheck == NULL)
{
  $this->session->set_flashdata('flash', 'Page Title Exists', 'error'); 
}else{
 $save_success = $this->page_model->save($post, $action, $post_id);
}

1 个答案:

答案 0 :(得分:2)

您的模型功能未返回任何内容,因此当您从控制器($urlCheck = $this->page_model->pageURLCheck($post['post_title'], $website_id);)调用它时,您会获得NULL

只需在方法中添加return

function pageURLCheck($title, $id)
{
    $this->db->select('post_title, website_id');
    $this->db->where('post_title', $title);
    $this->db->where('website_id', $id);

    return $this->db->get($this->_table['posts']);
}  

此外,不检查NULL 在控制器中,由于您没有检索值(即没有result_array()results()),所以您总是得到< strong>对象返回(DB类)。

<强>更新

重新阅读你的问题,看起来你想检查是否存在某些东西,所以你应该这样做:

function pageURLCheck($title, $id)
{
    $this->db->select('post_title, website_id');
    $this->db->where('post_title', $title);
    $this->db->where('website_id', $id);

    $query = $this->db->get($this->_table['posts']);
    return $query->num_rows();  // <-- return the number of rows found in resultset
}  

<强>控制器

$urlCheck = $this->page_model->pageURLCheck($post['post_title'],  $website_id);

if($urlCheck > 0){
    $this->session->set_flashdata('flash', 'Page Title Exists', 'error'); 
} 
else{
    $save_success = $this->page_model->save($post, $action, $post_id);
}