codeigniter多表连接

时间:2012-05-28 07:42:38

标签: arrays codeigniter-2

codeigniter模型中的

功能不起作用。由于codeigniter模型函数中的代码如下,我得到http错误500。如果我删除此代码..代码工作正常。

function get_ad_by_user($a,$b)
    {
        $this->db->select('title,ci_categories.category,ci_subcategories.subcategory,state,city,locality,ad_website,description,phone_number,address,image_token1,image_token2');
        $this->db->from('ci_pre_classifieds');
        $this->db->join('ci_categories', 'ci_categories.category_id = ci_pre_classifieds.category');
        $this->db->join('ci_subcategories', 'ci_subcategories.subcategory_id = ci_pre_classifieds.sub_category');
        $this->db->where('ci_pre_classifieds.id',$a);
        $this->db->where('ci_pre_classifieds.ad_string_token',$b);
        $q=$this->db->get();
        $this->db->last_query();
        log_message('debug','******query'.$this->db->last_query().'********');
        if($q->num_rows()==1)
        {
            foreach($q->result_array() as $row)
            {
                $data['title]=$row['title'];
                $data['category']=$row['ci_categories.category'];
                $data['sub_category']=$row['ci_subcategories.subcategory'];
                $data['state']=$row['state'];
                $data['locality']=$row['locality'];
                $data['ad_website']=$row['ad_website'];
                $data['description']=$row['description'];
                $data['phone_number']=$row['phone_number'];
                $data['address']=$row['address'];
            }
        }
        else
        {
            $data['message']="sorry either classified expired or deleted";
        }

        return $data;
    }

我收到每个块的错误..如果我删除所有工作...如何在$ data数组中复制$ row数组

1 个答案:

答案 0 :(得分:1)

$data['title]=$row['title'];有'失踪'。

这可能是原因,但没有错误信息,很难说。

此外,您可能希望将功能简化为以下内容:

function get_ad_by_user($a,$b)
{
    $data = array();

    $this->db->select('title,ci_categories.category,ci_subcategories.subcategory,state,city,locality,ad_website,description,phone_number,address,image_token1,image_token2');
    $this->db->from('ci_pre_classifieds');
    $this->db->join('ci_categories', 'ci_categories.category_id = ci_pre_classifieds.category');
    $this->db->join('ci_subcategories', 'ci_subcategories.subcategory_id = ci_pre_classifieds.sub_category');
    $this->db->where('ci_pre_classifieds.id',$a);
    $this->db->where('ci_pre_classifieds.ad_string_token',$b);
    $q=$this->db->get();
    log_message('debug','******query'.$this->db->last_query().'********');
    if($q->num_rows()==1)
    {
        $data[] = $q->row_array(); 
    }
    else
    {
        $data['message']="sorry either classified expired or deleted";
    }

    return $data;
}

如果您只在查询中返回一行,则只需使用$q->row_array()$q->row()即可返回单行。

为了以防万一,我还会在$data = array()函数的开头声明get_ad_by_user,否则它“可能”抱怨$data不存在。